嗨,我是Struts2的新手,想要在重定向中将参数从一个动作发送到另一个动作
我的表格就像
<s:form action="saveComment">
<s:push value="ai">
<s:hidden name="id"/>
<table cellpadding="5px">
<tr><td><s:textarea name="description" rows="5" cols="60" theme="simple" />
</td>
<td> <s:submit type="image" src="images/sbt.gif" >
</s:submit>
</td></tr>
</table>
</s:push>
</s:form>
我的struts.xml文件就像
<action name="saveComment" method="saveComment" class="com.weaverants.web.AIAction">
<result name="success" type="redirect">
<param name="actionName">displayAI</param>
<param name="aiId">${aiId}</param>
</result>
</action>
<action name="displayAI" method="displayAI" class="com.weaverants.web.AIAction">
<result name="success" >/display_ai.jsp</result>
</action>
答案 0 :(得分:3)
您已经在saveComment
中传递参数,只需将结果类型声明为redirectAction
,并将action
名称指定为redirectAction以及任何其他所需参数。像
<action name="gatherReportInfo" class="...">
<result name="showReportResult" type="redirectAction">
<param name="actionName">generateReport</param>
<param name="namespace">/genReport</param>
<param name="reportType">pie</param>
<param name="width">100</param>
<param name="height">100</param>
<param name="empty"></param>
</result>
</action>
生成的重定向网址将为
/genReport/generateReport.action?reportType=pie&width=100&height=100
另一方面,使用结果类型为redirect
表示响应被告知将浏览器重定向到指定位置(来自客户端的新请求)。在这种情况下还有动作实例,动作错误,字段错误,刚刚执行的等等丢失,不再可用,只有通过URL或通过会话传递参数的方式
可以使用与redirectAction相同的代码
Redirect和actionRedirect之间的区别是第一个将使用HttpServletResponse#sendRedirect(String) sendRedirect
,而后者将由ActionMapperFactory提供的ActionMapper由struts2框架处理,因为它比Redirect
更好用。结果
要在这些结果类型的URL模式旁边传递数据,您可以使用
答案 1 :(得分:1)
您也可以尝试使用chain result代替redirectAction
。第一个操作中的所有参数都将传递给第二个操作,但您需要在第二个操作中使用参数的getter和setter行动。它看起来像这样:
<result type="chain">
<param name="actionName">home</param>
<param name="namespace">/secure</param>
</result>