我们一直在尝试从一个动作重定向到另一个动作,希望数据能够在相应的ActionForm
bean 之间传递。第一个动作接收来自浏览器的请求,打印一个数据字段,并将其转发给另一个动作,该动作打印相同的字段并重定向到 JSP。
问题是ActionTo
打印了一个不正确的值——它commonInt
的默认值是0
, 而我们期望的是35
。
这是一个代表性的例子:
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");
}
}
actionForms 是:
public class FormA extends ActionForm {
public int intA;
public int commonInt;
}
public class FormB extends ActionForm{
public int intB;
public int commonInt;
}
映射:
<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>
有没有办法做到这一点?或者两种形式应该是一样的?
我们尝试的解决方法是通过请求传递东西,但它可能会变得庞大而混乱。