In questa lezione analizzeremo quelle action pronte all'uso, contenute nel package org.apache.struts.actions
, che non abbiamo ancora trattato, ma che vale la pena conoscere.
MappingDispatchAction
La MappingDispatchAction
è identica alla DispatchAction
, solo che in fase di mapping non si specifica più il parametro, ma direttamente il nome del metodo da invocare. La stessa azione sarà mappata con nomi differenti e sarà chiamata a seconda del metodo da invocare.
Riprendendo l'esempio fatto per la DispatchAction
nelle lezioni precedenti, dovremo modificare innanzitutto l'estensione della classe, che sarà org.apache.struts.action.MappingDispatchAction
. Nello struts-config scriveremo:
<action path="/saveMappingDispatchUserSubmit"
type=" fulvios.UserMappingDispatchAction"
parameter="save">
<forward name="success" path="/success.jsp" />
</action>
<action path="/removeMappingDispatchUserSubmit"
type="fulvios.UserMappingDispatchAction"
parameter="remove">
<forward name="success" path="/success.jsp" />
</action>
Quindi se vogliamo eseguire il metodo save
invocheremo l'azione con il nome /saveMappingDispatchUserSubmit
mentre per il metodo remove /removeMappingDispatchUserSubmit
.
BaseAction
La BaseAction
è molto simile ad una semplice Action
di Struts solo che mette a disposizione il seguente metodo execute()
:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res)
throws Exception {
preProcess(mapping,form,request,response);
if (isErrors(request)) {
return findFailure(mapping,form,request,response);
}
try {
executeLogic(mapping,form,request,response);
}
catch (Exception e) {
setException(request,e);
catchException(mapping,form,request,response);
}
finally {
postProcess(mapping,form,request,response);
}
if (isErrors(request)) {
return findFailure(mapping,form,request,response);
}
if ((isStruts_1_0()) && (isMessages(request))) {
saveErrors(request,getMessages(request,false));
}
}
Questo metodo mette a disposizione una parte dove si può implementare una logica di business da effettuare prima di eseguire il processo vero e proprio che sarà contenuto nel metodo executeLogic()
. Nel metodo è già compresa la gestione delle eccezioni generale.
IncludeAction
La classe IncludeAction
ha la stessa funzionalità della ForwardAction
solo che permette l'integrazione di servlet con l'applicazione Struts. Si configura allo stesso modo della ForwardAction
solo che l'attributo parameter
deve specificare il path di una servlet, mentre type
deve essere org.apache.struts.actions.IncludeAction
.