调用操作后,在操作内的操作 URL 中添加查询参数

Posted

技术标签:

【中文标题】调用操作后,在操作内的操作 URL 中添加查询参数【英文标题】:Add Query Parameter in action url within action after action is called 【发布时间】:2016-06-22 05:46:03 【问题描述】:

我正在将应用程序从 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;

 

当它重定向到输入页面时,修改如下:

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

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

localhost: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>

谁能告诉我如何实现它。

【问题讨论】:

struts.apache.org/docs/redirect-action-result.html. @AleksandrM OP 没有分配任何变量名来传递request.getQueryString(),在这种情况下添加&lt;param /&gt; 标签是不可能的。 @VinothKrishnan 什么? @VinothKrishnan 在下面查看我的答案 【参考方案1】:

你可以回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的getter:

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

【讨论】:

以上是关于调用操作后,在操作内的操作 URL 中添加查询参数的主要内容,如果未能解决你的问题,请参考以下文章

文档就绪循环运行(添加查询字符串后)

Yii2 使用查询参数渲染 url

EasyAdmin 3 如何根据查询从操作 createEntity 设置关联

ThinkPHP远程调用模块的操作方法 URL 参数格式

Jmeter的操作使用

操作 url 参数 Restful API