Pregunta

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 reenviará al resultado = "éxito" y necesito que la acción que se llamará en el éxito venga 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 (USUARIO) ==== "éxito" ====> FORM2 (DIRECCIÓN)

userForm.html ===================> direcciónForm.html?user_id=X ...(donde X :ID pasó el lanzamiento de UserAction (método: guardar) a AddressAction (método: newAddress))

Por favor agradeceré su ayuda

gracias de antemano

¿Fue útil?

Solución

Ha utilizado la palabra "hacia adelante", pero parece que usted quiere ir a una nueva página (address.html) para recoger más información acerca de la dirección. Si este es el caso, es necesario redirigir a la página de dirección después de la acción del usuario completa.

<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>

El ID de usuario $ {} sintaxis llamará getUserId en su UserAction y pasar ese parámetro como se mostró en su pregunta:? AddressForm.html user_id = X. recoger-dirección puede tener un resultado de éxito que va a addressForm.html. Docs aquí. Si desea evitar el uso de otra acción , puede intentar utilizando el tipo de resultado = "redirigir" y pasar a través de las cosas de esa manera.

Si realmente desea reenviar, puede utilizar encadenamiento . Esta es desalentado por Ted Husted en el equipo Struts2 pero es posible que funcione para usted.

En lugar de encadenamiento de acción, tratar de llevar todo el código para completar esta solicitud en una sola acción y el uso de servicios auxiliares o clases de usuario y la Dirección de separar y reutilizar el código en lugar de "el encadenamiento de la acción".

Otros consejos

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 ID en una solicitud como esta

request.setAttribute("ID", iDValueObject);

En la segunda acción puedes extraer el valor de ID de esta manera.

request.getAttribute("ID");

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top