Struts 2 - 为重定向操作保留属性值

时间:2012-02-02 12:41:16

标签: redirect struts2

我希望在重定向到其他操作后保留属性值。我知道,由于我们正在导航到不同的行动(请求),因此价值将会消失。但我需要了解一下如何实现这一目标呢?

这是我的代码:

<action name="save" class="saveAction" method="saveData">
            <result name="success" type="redirectAction">redirectedPageAction</result>
            <result name="successView" >successView.jsp</result>
            <result name="error" >error.jsp</result>
</action>

    <action name="redirectedPageAction" class="month" method="">
        <result name="success">employeesList.jsp</result>
    </action>

在save action类中,我使用addActionMessage(String msg)方法来设置值。我也有同样的getter / setter。

我试过这个但没有成功:

    <action name="redirectedPageAction" class="month" method="">
          <result name="success">employeesList.jsp>
               <param name="msg">${msg}</param>    
          </result>
    </action>

我想要在employeeelist.jsp页面中由adActionMessage(msg)设置的值。我得到空指针struts异常。

请帮助..

4 个答案:

答案 0 :(得分:1)

按请求创建操作。如果您实际上没有将第一个操作中的任何内容传递给第二个操作,则第二个操作将无法检索任何内容。 Getters不会改变HTTP机制。

如果您对邮件/等有兴趣,请使用MessageStoreInterceptor,或手动执行。

答案 1 :(得分:1)

由于您已经提到了这一点,并且您知道它将创建一个新的请求周期和每个请求创建的Actions,因为它们也可以作为Data对象使用,这意味着您的请求/响应参数将丢失。

现在你有几个选项

  1. 尝试使用Struts2版本来支持此message-store-interceptor
  2. 已创建此拦截器以将ValidationAware操作的消息/错误和字段错误存储到HTTP会话中,并且在您的用例中非常有用。

    如果您想要更广泛的范围,您可以在会话中存储数据并在以后阶段检索数据,也可以将值作为查询参数传递。

答案 2 :(得分:1)

之前我遇到过这个问题,有时你需要在一个动作后显示一个全新的视图,重定向结果没有考虑任何以前的数据(http请求的东西)。 我们想创建一个自定义拦截器,但在此之前我发现了这个 http://www.mail-archive.com/user@struts.apache.org/msg77854.html

这对我们很有帮助。

话虽如此,你使用的是什么版本的Struts 2?我们使用Struts 2.2.3,传递给redirectAtion的参数工作正常。 你们两个行动都有制定者和吸气者吗?

答案 3 :(得分:0)

您可以使用redirectAction作为参数传递属性变量

<action name="save" class="saveAction" method="saveData">
            <result name="success" type="redirectAction">
               <param name="actionName">redirectedPageAction</param>
               <param name="msg">${msg}</param>
            </result>
            <result name="successView" >successView.jsp</result>
            <result name="error" >error.jsp</result>
</action>

另外,不要错过在msg操作中为redirectedPageAction变量添加getter / setter