Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il file di configurazione 'struts-config.xml'

Configurare le entità, i form, i plug-in che comporranno l'applicazione
Configurare le entità, i form, i plug-in che comporranno l'applicazione
Link copiato negli appunti

Per caricare e creare all'avvio tutti i componenti necessari all'applicazione, Struts fa riferimento ad un file di configurazione chiamato struts-config.xml. Questo file ci permette di specificare in maniera dichiarativa il comportamento dei componenti del framework, evitando che le informazioni e il comportamento siano inseriti rigidamente nel codice delle applicazioni.

Questo fornisce agli sviluppatori la flessibilità necessaria ad inserire le proprie estensioni, che il framework può utilizzare in maniera dinamica.

Lo stuts-config si basa sul formato XML e può essere validato con il DTD di Struts, analizziamone la struttura.

Il tag root dello struts-config è <struts-config>, all'interno del quale troviamo cinque sezioni:

  • global-forwards
  • form-beans
  • action-mappings
  • message-resources
  • plug-in

In questa lezione le presentiamo brevemente, ma ce ne occuperemo più approfonditamente nel corso della guida.

global-forwards

In questa sezione possiamo creare delle associazioni tra particolari nomi (che specificano azioni del controller) e i relativi percorsi (che specificano delle viste), stabilendo dei forward validi a livello "globale" nell'applicazione.

In altre parole non si fa altro che mappare le condizioni di ritorno di una richiesta con particolari Jsp. Lo facciamo utilizzando un elemento <forward> per ogni associazione, grazie alle proprietà name e path.

Un esempio può essere dato da una pagina globale per gli errori, scrivendo una entry nel global-fowards in questo modo:

<global-forwards>
  <forward name="error" path="/error.jsp"/>
</global-forwards>

Grazie a questa configurazione, quando in caso di errore viene richiamata l'action error, l'applicazione inoltra la richiesta dell'utente alla Jsp con path /error.jsp.

Analizziamo gli attributi più importanti per configurare un global-forward:

Attributo Descrizione
className Serve a dichiarare la classe che estende il bean di configurazione e che manterrà tutte le informazioni di forward. Se non specificata, la classe predefinita sarà org.apache.struts.action.ForwardConfig
Name È il nome (unico) che servirà a riferirsi a questo forward nell'applicazione. Questo attributo è obbligatorio
path È l'URI verso cui dovrebbe avvenire il forward. È un attributo obbligatorio e deve cominciare con il carattere "/"

form-beans

La seconda parte serve a definire i form bean, particolari classi che contengono i dati inseriti in un form all'interno di una Jsp. Si dichiara uno o più form bean nel seguente modo:

<form-beans>
  <form-bean name="..." type="..." />
</form-beans>

Ecco gli attributi più importanti per configurare un form bean:

Attributo Descrizione
className Quando non si vuole utilizzare il bean di configurazione standard di Struts, bisogna specificare in questo attributo la classe creata nell'applicazione che la sostituisce
Name È il nome (unico) che servirà a riferirsi a questo form bean in tutta l'applicazione. Questo attributo è obbligatorio
Type Il nome di una classe Java che estende la classe ActionForm di Struts

Analizzeremo meglio la struttura e le tipologie dei form bean nei capitoli successivi.

action-mappings

In questa sezione definiamo le action. Per ogni azione inseriamo un elemento <action> e ne specifichiamo sia le caratteristiche (grazie alle proprietà come path, name, parameters, etc.) sia i forward dell'azione stessa (grazie ad elementi <forward>). Ecco come pùo presentarsi la dichiarazione di una action:

<action-mappings>
  <action path="/..." name="..." scope="..." type="..."
          parameter="..." validate="...">
    <forward name="..." path="/..." />
  </action>
</action-mappings>

Analizziamo gli attributi più importanti per definire un action-mapping:

Attributo Descrizione Necessità
path È il percorso per la request inviata. Deve iniziare con il carattere "/" e senza l'estensione del nome del file. In altre parole è il nome dell'azione obbligatorio
name È il nome del form bean associato all'azione facoltativo
input Il path per il modulo di immissione dati verso il quale deve essere reindirizzato il controllo se si verifica un errore di validazione obbligatorio se è specificato l'attributo name
validate Valore booleano (false o true) che indica se il metodo validate() del form bean, deve essere invocato prima di eseguire l'action, per default è true facoltativo
scope Indica quale visibilità abbia il form bean e assumere i valori request (relativo solamente alla sola richiesta) o session (relativo per tutta la sessione dell'utente) facoltativo
Forward Questo elemento ci permette di indicare il nome (attributo name) e il path (attributo path) di una servlet o di una pagina JSP verso cui verrà effettuato il forward facoltativo, può non essere dichiarato se presenti gli attributi type o include.
type È usato per elaborare la request se gli attributi forward o include non sono specificati. Si deve dichiarare il nome di una classe Java che estende la org.apache.struts.action.Action facoltativo ed esclusivo rispetto a forward e include
include Indica il path di una servlet o di una pagina JSP che saranno incluse nella response facoltativo ed esclusivo rispetto a forward e type
attribute Serve a dichiarare il nome di un attributo necessario ad accedere al form bean dell'action da dichiarare (vedremo meglio questo meccanismo in seguito) facoltativo e ha precedenza rispetto all'attributo name
parameter È utilizzato per passare informazioni extra all'istanza dell'action selezionata. All'interno della action, possiamo recuperare un parametro definito in questo modo grazie al metodo getParameter() facoltativo
className Serve ad indicare una classe alternativa per il mapping e la configurazione dell'action. Di default Struts usa org.apache.struts.ActionMapping facoltativo

Ecco un esempio di action mapping, in cui associamo il path "/azione" alla classe it.html.struts.MyAction, indichiamo che utilizzeremo il form myForm e che per gli errori ci serviamo della vista dataerror.jsp:

<action path = "/azione"
        type = "it.html.struts.MyAction"
        name = "myForm"
        input = "/WEB-INF/jsp/dataError.jsp">
  <forward name="OK" path="/WEB-INF/jsp/viewResult.jsp"/>
  <forward name="ERROR" path="/WEB-INF/jsp/busError.jsp"/>
</action>

message-resources

I message-resources, sono classi utili per gestire i messaggi in modo unificato nell'applicazione. Sono particolarmente utili per applicazioni multilingua.

<message-resources parameter="MessageResources" />

Vedremo che nelle viste si farà riferimento a delle chiavi (key) che saranno poi associate ai messaggi corrispondenti.

plug-in

Infine abbiamo la parte dedicate alla dichiarazione dei plugin usati nell'applicazione. Osserviamo come aggiungere alla nostra applicazione uno dei plugin più utilizzati del framework, il validator che permette di validare i parametri inseriti in un form:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
                value="/org/apache/struts/validator/validator-rules.xml,
                       /WEB-INF/validation.xml"/>
</plug-in>

File di configurazione multipli

Nei progetti di grandi dimensioni è possibile specificare più di un file di configurazione. Ciò consente, ad esempio, l'importazione di componenti specifici per particolari rami dell'applicazione, o di avere più applicazioni Struts sullo stesso server.

Per dichiarare un nuovo ramo dell'applicazione, ad esempio la sezione blog, dobbiamo agire sul web.xml ed aggiungere un parametro all'elemento <servlet>

<init-param>
  <param-name>config/blog</param-name>
  <param-value>/WEB-INF/struts-blog-config.xml</param-value>
</init-param>

Ti consigliamo anche