Factorizar varias actions realizables sin JavaScript: el LookupDispatchAction

2136 vistas

Si el JAvaScript no está activado o no lo queremos usar, el DispatchAction no funcionará. Por suerte, Struts ofrece el LookupDispatchAction (org.apache.struts.actions.LookupDispatchAction) que permite sobrepasar esta limitación.

El LookupDispatchAction usa el mecanismo del [iurl=90&all=0&fs=1202#1237]DispatchAction[/iurl]. Las únicas diferencias están en la declaración del nombre del (o de los) botón(es) de acceptación que tienes que ser idénticos (atributo property de la etiqueta submit) al valor dado al atributo parameter en la deficnición de la action.



xml
  1. <action
  2.   path="/cartManagement"
  3.   type="app.management.CartAction"
  4.   name="cartForm"
  5.   scope="request"
  6.   validate="true"
  7.   parameter="miAction"/>



En el JSP, los botones se llamarán gracias a una clave del [iurl=90&all=0&fs=1196#1197]ResourceBundle[/iurl].



html4strict
  1. <html:form action="/cartManagement">
  2.   <html:submit property="miAction">
  3.       <bean:message key="button.add"/>
  4.   </html:submit>
  5.   <html:submit property="miAction">
  6.       <bean:message key="button.delete"/>
  7.   </html:submit>
  8. </html:form>



Los valores pasados estarán localizados y cambiarán en función del locale. Para mapear estos valores a un método en particular, añadiremos a la Action un método que se llamará en el momento de la aceptación:



java
  1. protected Map getKeyMethodMap() {
  2.   Map map = new HashMap();
  3.   map.put("button.add", "add");
  4.   map.put("button.delete", "delete");
  5.   return map;
  6. }



Lo demás es idéntico a [iurl=90&all=0&fs=1196#1197]DispatchAction[/iurl].