Factorizar varias actions realizables en un sólo ActionForm: el DispatchAction
Artículo por Club Developers · 29 August 2006
3401 vistas
A menudo es práctico poder realizar varias actions en el mismo formulario.
Por ejemplo, para la gestión de un panel virtual, poder añadir, modificar o borrar elementos.
Para realizar este tipo de tareas, podemos usar el DispatchAction que concentrará en una sola action el conjunto de operaciones realizables en un sólo JSP.
Usaremos un JavaScript sencillo que modifica el valor de un campo oculto en el momento de la aceptación.
En el formulario:
Ahora, en la Action en cuestión, bastará con crear los métodos que tengan los mismos nombres que los valores posibles del campo hidden en lugar del método execute(...).
En el fichero de configuración struts-config.xml, tendremos que añadir a la declaración del action el atributo "parameter" y indicarle el nombre del campo.
Por ejemplo, para la gestión de un panel virtual, poder añadir, modificar o borrar elementos.
Para realizar este tipo de tareas, podemos usar el DispatchAction que concentrará en una sola action el conjunto de operaciones realizables en un sólo JSP.
Usaremos un JavaScript sencillo que modifica el valor de un campo oculto en el momento de la aceptación.
En el formulario:
html4strict
<html:form action="/cartManagement"> ... <html:hidden property="hidden" value="default"/> ... <html:submit onclick="setHidden('add');">ADD ELEMENT</html:submit> </html:form>
Ahora, en la Action en cuestión, bastará con crear los métodos que tengan los mismos nombres que los valores posibles del campo hidden en lugar del método execute(...).
java
public class CartAction extends DispatchAction { public ActionForward add( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) public ActionForward remove( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) public ActionForward modify( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) }
En el fichero de configuración struts-config.xml, tendremos que añadir a la declaración del action el atributo "parameter" y indicarle el nombre del campo.
xml
<action path="/cartManagement" type="app.management.CartAction" name="cartForm" scope="request" validate="true" parameter="hidden"/>