我正在将应用程序从struts1迁移到struts2。我这里有一个用例。 Struts1操作在URL中添加查询字符串,如下所示:

 public String execute() throws Exception {
     ..... some code here.....
     ActionForward inputForward = HttpRedirector.getRedirectToInput(request,
     mapping, "id=" + request.getParameter("id") + "&" +
     request.getQueryString(), filterForm);

     return inputForward;

 }


重定向到输入页面时,URL的修改如下:

http://localhost:8084/struts2App/board.jsp?id = 1&null

同样,我必须在struts2操作网址中添加查询字符串。目前,当我提交表单时,我的struts2操作网址看起来像这样:

本地主机:8084 / struts2App / board.action

我想修改它,就像在struts1中一样:

http://localhost:8084/struts2App/board.action?id = 1&null

这是struts2动作映射

    <action name="board*" class="com.nextjet.web.hud.BoardAction">
        <result name="success">/board.jsp</result>
        <result name="input">/board.jsp</result>
    </action>


有人可以告诉我如何实现它。

最佳答案

您可以返回redirect result

<action name="board*" class="com.nextjet.web.hud.BoardAction">
    <result name="success">/board.jsp</result>
    <result name="input">/board.jsp</result>
    <result name="redirect" type="redirectAction">
      <param name="actionName"><![CDATA[${'board.action?'+ parameters}]]></param>
    </result>
</action>


您应该使用parameters的吸气剂:

public String getParameters(){
   return "id=" + request.getParameter("id") + "&" + request.getQueryString();
}

09-26 05:54