Java Struts 1: forward from action to action. Passing data through ActionForms

前端 未结 3 1186
没有蜡笔的小新
没有蜡笔的小新 2021-02-13 09:55

We\'ve been trying to redirect from one action to another, hoping that data would be passed between corresponding ActionForm beans. The first action receives a requ

相关标签:
3条回答
  • 2021-02-13 10:08

    Sounds like this could get messy, I'd keep this simple and use the ActionForm only to store Request data.

    public class FormA extends ActionForm {
        public int intA;
        public int commonInt;
    }
    

    Once the Request has been submitted take the data out of the ActionForm and stuff it into the session somewhere, either directly, or into a data holder within the session to maintain this kind of information.

    public class ActionTo extends DispatchableAction {
      public ActionForward recv(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {
        FormA form = (FormA)form;
    
        DataHolder dataHolder = request.getSession().getAttribute("dataHolder");
        dataHolder.setCommonInt(commonInt);
        dataHolder.setIntA(intA);
    
        return mapping.findForward("send");
      }
    }
    

    Ideally, if you're not heavily invested in Struts 1 I'd take a look at Struts 2.

    0 讨论(0)
  • 2021-02-13 10:17

    Tom, using you solution and combining with ActionRedirect, suggested by Vincent Ramdhanie, I got what you wanted too.

    The code is simple as that and it allow you to have separated Forms for each Action.

    ActionRedirect redirect = new ActionRedirect(mapping.findForward("send"));
    redirect.addParameter("commonInt", formA.getCommonInt());
    return redirect;
    
    formB.setCommonInt(request.getParameter("commonInt"));
    

    This endend up saving my day and helping me not to have the effort to change that directly in the JSP, what would be awful.

    0 讨论(0)
  • 2021-02-13 10:18

    The way to accomplish this is to use the same actionform for both actions. Is there a specific reason why you need two different actionforms? If not try modifying the second action mapping to name="formA" and the action itself to use FormA rather than FormB.

    0 讨论(0)
提交回复
热议问题