Hemos intentado redirigir de una acción a otra, esperando que los datos se pasen entre los correspondientes beans ActionForm
. La primera acción recibe una solicitud del navegador, imprime un campo de datos y lo reenvía a otra acción, que imprime el mismo campo y lo redirecciona a un JSP.Java Struts 1: reenvía de la acción a la acción. Pasar datos a través de ActionForms
El problema es que ActionTo
está imprimiendo un valor incorrecto - su commonInt
tiene un valor predeterminado de 0
, mientras esperamos 35
.
Aquí está un ejemplo que representa:
public class ActionFrom extends DispatchableAction{
public ActionForward send(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormA formA = (FormA)form;
formA.commonInt = 35;
System.out.println("sent: "+formA.commonInt);
return mapping.findForward("send");
}
}
public class ActionTo extends DispatchableAction{
public ActionForward recv(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormB formB = (FormB)form;
System.out.println("recv= "+formB.commonInt);
return mapping.findForward("send");
}
}
Y ActionForms son:
public class FormA extends ActionForm {
public int intA;
public int commonInt;
}
public class FormB extends ActionForm{
public int intB;
public int commonInt;
}
Asignaciones:
<action path="/from" type="EXPERIMENT.ActionFrom" name="formA" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/to.do?dispatch=recv" redirect="false"/>
</action>
<action path="/to" type="EXPERIMENT.ActionTo" name="formB" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/login.do" redirect="false"/>
</action>
¿Hay una manera de lograr esto? O ambas formas deben ser iguales?
La solución que probamos fue pasar las cosas a través de la solicitud, pero puede ser grande y complicado.
Pido disculpas por la longitud de esto. – Tom