在Struts2中重定向时在url中传递参数

时间:2012-06-12 23:38:39

标签: java struts2

  

可能重复:
  Strut2 - Get Property value in next Action

我正在尝试使用Struts2实现以下功能

response.sendRedirect("Pay.jsp?msg=transfer");

这就是我在做的事情:

 <action name="AddPayAction" class="controller.AddPayAction">
            <param name="paraA"></param>
            <param name="paraB"></param>
            <param name="msg">SomeMessage</param>
            <result name="error">/Error.jsp</result>
            <result name="success" type="redirect">/Pay.jsp</result>
 </action>

为什么上述内容未被重定向为以下内容的任何建议:

      Pay.jsp?msg=SomeMessage

4 个答案:

答案 0 :(得分:9)

到目前为止,对我有用的解决方案是

 <result name="success" type="redirect">
                <param name="location">/Pay.jsp?msg=${msg}</param>
 </result>

其中msg的setter和getter在action

中定义

答案 1 :(得分:3)

<action name="AddPayAction" class="controller.AddPayAction">
      <result name="success" type="redirectAction">
        <param name="actionName">Pay</param>
        <param name="msg">SomeMessage</param>
      </result>
  </action>

  <action name="Pay">
      <result name="success">/Pay.jsp</result>
  </action>      

如果要传递变量值,例如msg其getter / setter在AddPayAction中声明,然后使用此

<param name="msg">${msg}</param>

A similar post

答案 2 :(得分:1)

我认为应该是这样的:

<action name="AddPayAction" class="controller.AddPayAction">
    <result name="error">/Error.jsp</result>
    <result name="success" type="redirect">
        <param name="location">Pay.jsp</param>
        <param name="paraA"></param>
        <param name="paraB"></param>
        <param name="msg">SomeMessage</param>
    </result>
</action>

请参阅http://struts.apache.org/2.1.6/docs/redirect-result.html

上的示例

答案 3 :(得分:1)

看一看你的代码,看起来你只想在JSP中结束操作,所以我不明白为什么你要尝试使用redireciton类型。我建议使用默认重定向类型:dispatcher

<action name="AddPayAction" class="controller.AddPayAction">
    <result name="error">/Error.jsp</result>
    <result name="success">/Pay.jsp</result>
</action>

请注意,由于dispatcher是默认类型,因此您无需在结果中编写type="dispatcher"。所以,现在,如果你想在JSP中使用变量,你只需要使用其get / set方法在action中声明这些变量。例如:

private String msg;

public String AddPayAction() {

    // your action code

    this.setMsg("my message");

    return SUCCESS;

}

public String getMsg() {

    return msg;
}

public void setMsg(String msg) {

    this.msg= msg;
}

查看可用的result types