pc-facile.com
http://www.pc-facile.com/news/struts_1_mappingdispatchaction/22631.htm



Struts 1.2: MappingDispatchAction

Software: ale 23 Settembre 04 @ 20:00 pm


E' difficile trovare qualcuno che lavori in ambito J2EE, il quale non abbia mai sentito parlare di Struts. Questo fortunatissimo sotto-progetto della Apache Software Foundation (progetto Jakarta) è riuscito a far conoscere il pattern MVC (Model 2) ad una notevole quantità di persone. In ambito Java-web, oggi, Struts è lo standard implementativo de facto del pattern sopracitato.


I cambiamenti più importanti nella vita di questo progetto si sono avuti nel passaggio dalla release 1.0 alla 1.1. Quest'ultima versione è quella che ha contribuito alla maggior diffusione di Struts. Da tener presente che alcune componenti della 1.1 sono diventate singolarmente parti del sotto-progetto Jackarta Commons.

Oggi siamo alla release 1.2.* e di seguito viene presentata una novità non presente nella 1.1.

MappingDispatchAction è una nuova Action standard simile alla già conosciuta DispatchAction. Una classe che estende DispatchAction richiede in fase di mapping la specifica di un parametro, da passare obbligatoriamente in get o in post alla sua invocazione, il cui contenuto specifica quale metodo della classe invocare (tutti questi metodi devono essere "cloni" del classico execute chiaramente con nome diverso).

Lo scopo di questa azione è concentrare in un'unica classe tutte le operazioni in comune ad un contesto quale ad esempio: modifica, visualizzazione, cancellazione e salvataggio delle news di un sito. Lo svantaggio è che tutti i link che fanno riferimento a questa azione devono avere (get o post) il parametro contenente il nome del metodo da invocare.

Per semplificare il lavoro dello sviluppatore è stata introdotta MappingDispatchAction. Un'azione che estende questa classe è identica alla precedente che estendeva DispatchAction con la sola differenza che in fase di mapping NON si specifica più il parametro, ma direttamente il nome del metodo da invocare. Nell'esempio delle news di un sito avremo N azioni mappate, se N sono le operazioni sulle news ed N i relativi metodi della nostra classe Action.

Un esempio (di mapping) chiarirà ogni dubbio (spero):

<action path="/vediNews" type="NewsAction" parameter="read">
<forward name="success" path="/a.jsp" />
</action>

<action path="/cancellaNews" type="NewsAction" parameter="delete">
<forward name="success" path="/b.jsp" />
</action>

<action path="/creaNews" type="NewsAction" parameter="create">
<forward name="success" path="/c.jsp" />
</action>

Ora "chiamando" vediNews senza specificare altro, viene invocato il metodo read (valore dell'attributo parameter) della classe NewsAction (che estende MappingDispatchAction).

Luca Conte - Programmazione.it



© 2000-2024 pc-facile.com