Struts重定向与params

时间:2011-08-04 23:06:04

标签: struts-1

我正在使用struts 1.2.4,但是我需要使用Action Servlet中的参数重定向到目标页面。我无法升级到1.2.7+ struts,因此我无法利用ActionRedirect

现在,我的action类中的save()方法返回ActionForward

    return (mapping.findForward("success"));
}

映射到struts-config.xml

中的此条目
        <forward 
            name="success" 
            path="/enterprise/company/searchCompany.do"/>

我实际上喜欢将save()方法转发为'/enterprise/company/saveSurvey.do?companyID=1'之类的东西 - 我的动作类的保存方法可以使用companyID的值。

如果我无法升级Struts以利用ActionRedirect,那么使用param完成重定向的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我看到了2种变体,但是我对此领域的知识肯定很少。

首先: 您可以先在地图中保存参数,然后再在会话中保存参数,然后再加载它们

public ActionForward execute (HttpServletRequest request, ....){
  Map<String,String> params = new HashMap<>();
  params.put("companyId","1");
request.getSession().setAttribute("PARAM_MAP",params);
   return (mapping.findForward("success"));
}

在其他方法中,您可以从该地图获取参数,例如

Map<String,String> map = (Map<String,String>)request.getSession().getAttribute("PARAM_MAP");

第二个变体更容易。您可以为Actions使用1种形式,而在struts.xml中则必须指出

<form-beans>
   <form-bean name="MyBeanForm" type="your.full.packet.path.MyBeanForm"/>
</form-beans>

<action-mappings>

  <action path="searchCompany"
          name ="MyBeanForm"
          scope="session"
          type="enterprise.company.SearchCompanyAction" />


  <forward 
            name="success" 
            path="/enterprise/company/searchCompany.do"/>

</action-mappings>