调用操作后,在操作内的操作 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()
,在这种情况下添加<param />
标签是不可能的。
@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 中添加查询参数的主要内容,如果未能解决你的问题,请参考以下文章