L'aspetto grafico delle applicazioni web generate con la cartuccia struts2Basic di guigen dipende da due fattori:
Nell' ambito della cartuccia di generazione struts2Basic esiste la possibilità di specificare il portale target, tramite un parametro (portalName) della cartuccia stessa. Questa possibilità deriva dalla necessità di adattare il codice html generato agli standard del particolare portale. Al momento sono previsti i seguenti portali target:
Per alcuni portali è le risorse statiche sono mantenute globalmente sul web-server e alcuni frammenti di pagina (header di portale, footer di portale, header di applicativo) devono essere reperiti dall'applicativo con il meccanismo della remote include, mediante il quale la componente installata sull'application server reperisce tali frammenti facendo una chiamata server-to-server verso il resource provider, ovvero lo stesso apache che fornisce le risorse statiche.
L'impostazione della modalità da utilizzare deve essere effettuata secondo quanto descritto nel manuale della cartuccia struts2Basic.
La linea strategica a tendere è quella di abbandonare gradualmente i target portal legacy in favore della modalità neutral stilizzata con gli skin che permettono di riprodurre il tema grafico dei vari portali.
La logica di scelta del portale target (e quindi l'impostazione dell' opportuno parametro portalName nella cartuccia di generazione) è mostrato in figura:
La struttura (alberatura) delle risorse statiche in modalità neutral/M2 è quella riportata in figura.
Le risorse contenute in ris/images e ris/utheme/global sono gestite centralmente, mentre l'unica cartella relativa al singolo progetto si trova nell percorso ris/utheme/<nome_canale>/<nome_applicativo;>.
Nella modalità neutral/M2/remota tale cartella deve essere installata (copiata) sul web server unitamente all'installazione dell'applicazione J2EE nell'application server
Di fatto è necessario creare manualmente le risorse statiche. Le risorse necessarie sono le seguenti:
| risorsa | descrizione | posizione sul webserver | note |
| css di applicazione | file CSS che contiene le stilizzazioni specifiche dell'applicativo. Tra le stilizzazioni specifiche di applicativo rientrano anche ad esempio la stilizzazione dell'header di applicazione (ad esempio per apporre una immagine sul banner dell'applcativo) | /ris/utheme/[cod_canale]/[cod_applicativo]/css/[cod_applicativo].css |
il file è opzionale e deve essere creato a carico del progetto. E' consigliabile comunque creare almeno il file vuoto perchè il browser lo cerca comunque |
| header di applicazione | file contenente un frammento di codice HTML che contiene il markup dell'header di applicazione, dove tipicamente viene inserito il nome dell'applicazione, e un eventuale banner grafico. | /ris/utheme/[cod_canale]/[cod_applicativo]/include/application_header.html |
il file è obbligatorio e deve essere creato a carico del progetto.
Un esempio di codice è il seguente: <div id="applicationHeader"> <h2>Mio Applicativo</h2> </div> |
| static links | file contenente un frammento di codice HTML che contiene il markup degli "static links" dell'applicazione (tipicamente i link di help on line e contatti). | /ris/utheme/[cod_canale]/[cod_applicativo]/include/static_links.html |
il file è obbligatorio e deve essere creato a carico del progetto.
Un esempio di codice è il seguente: <li> <a href="/ris/utheme/[cod_canale]/[cod_appl]/help.html" class="aprihelp"> help </a> </li> <li> <a href="/ris/utheme/[cod_canale]/[cod_appl]/contatti.html" class="apricontatti"> contatti </a> </li> <li> <a href="/ris/utheme/[cod_canale]/[cod_appl]/popup.html" class="apri"> nuova finestra </a> </li>(La presenza delle classi "apri","apriHelp","apriContatti" permette, grazie ad un arricchimento standard presente in tutti gli skin, l'apertura del link corrispondente in una finestra/popup separata, come previsto dagli standard). |
| immagini di applicazione | immagini specifiche dell'applicazione (es. immagine del banner di applicazione, icone aggiuntive, ...) | /ris/utheme/[cod_canale]/[cod_applicativo]/css/im/... |
la cartella e i relativi files sono opzionali e devono essere creati a carico del progetto. |
| altri file | eventuali altri file necessari per l'applicazione | /ris/utheme/[cod_canale]/[cod_applicativo]/... |
eventuali altri file possono essere liberamente collocati nella cartella relativa all'applicazione o in eventuali sottocartelle specifiche (es. file di help, file di contatti, ...) |