java - Struts 2: parámetros entre Acciones
java-ee parameters (3)
Tengo la siguiente pregunta: necesito pasar un parámetro (por ejemplo, ID) cuando termino un formulario y la acción guarda los valores del formulario, esto se enviará al resultado = "éxito" y necesito que la acción que será llamada en el éxito vienen con el ID y otros parámetros para usar más adelante en el siguiente formulario para guardar esta información (info-form2 e info.form1) ...
por ejemplo:
FORM1 (USER) ==== "success" ====> FORM2 (DIRECCIÓN)
userForm.html ===================> addressForm.html? user_id = X ... (donde X: Id pasó throw de UserAction (método: guardar) a AddressAction ( método: newAddress))
Por favor agradeceré su ayuda
Gracias por adelantado
Esto debería funcionar:
<!-- Package Default -->
<package name="**default**" extends="struts-default,json-default" namespace="/">
<action name="noOp" class="com.web.myapp.action.NoOpAction">
<result name="success" type="chain">
<param name="requiresValidation">true</param>
<param name="actionName">userAuthentication</param>
<param name="namespace">/user</param>
</result>
</action>
</package>
<!-- Package User -->
<package name="user" extends="struts-default,json-default" namespace="/user">
<action name="userAuthentication" class="com.web.myapp.action.AuthenticateAction">
...
</action>
No está muy claro lo que quieres hacer.
Parece que después de la ejecución exitosa de una acción, la solicitud se reenvía a otra acción. En la primera acción, desea pasar el ID del parámetro y usarlo en la segunda acción. Dado que ambas acciones se utilizan en la misma llamada de solicitud, puede guardar el parámetro de ID en una solicitud como esta
request.setAttribute ("ID", iDValueObject);
En la segunda acción, puede extraer el valor de ID como este
request.getAttribute ("ID");
Usó la palabra "reenviar" pero parece que desea ir a una página nueva (dirección.html) para recopilar más información sobre la dirección. Si este es el caso, debe redirigir a la página de dirección una vez que finalice la acción del usuario.
<action name="user" class="UserAction">
<!-- Redirect to another namespace -->
<!-- for Struts 2.2 --> <result type="redirectAction">
<!-- for Struts 2.0 <result type="redirect-action"> -->
<param name="actionName">collect-address</param>
<param name="userId">${userId}</param>
</result>
</action>
La sintaxis $ {userId} llamará a getUserId en su UserAction y pasará ese parámetro como lo mostró en su pregunta: addressForm.html? User_id = X. collect-address puede tener un resultado exitoso que se dirija a addressForm.html. Documentos aquí. Si desea evitar el uso de otra acción, puede intentar usar el tipo de resultado = "redirigir" y pasar las cosas por ese camino.
Si realmente desea reenviar, puede usar el encadenamiento de acciones . Esto es desanimado por Ted Husted en el equipo de Struts2 pero puede funcionar para usted.
En lugar de encadenamiento de acción, intente llevar todo el código para completar esta solicitud en una sola acción y use clases de ayuda o servicio para Usuario y Dirección para separar y reutilizar el código en lugar de "encadenamiento de acción".