struts2之如何将参数从一个 Action 传递到另一个 Action

jirigala 阅读:55 2025-05-04 20:05:19 评论:0

嗨,我是 Struts2 的新手,想在重定向时将参数从一个 Action 发送到另一个 Action

我的表格是这样的

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

请您参考如下方法:

您已经在 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>  

生成的重定向 URL 将是

 /genReport/generateReport.action?reportType=pie&width=100&height=100 

另一方面,使用结果类型作为 redirect 意味着响应被告知将浏览器重定向到指定位置(来自客户端的新请求)。在这种情况下还有操作实例、操作错误、刚刚执行的字段错误等丢失并且不再可用并且传递参数的唯一方法是通过 URL 或通过 session

可以使用与 redirectAction 相同的代码

Redirect 和 actionRedirect 之间的区别是第一个将使用 HttpServletResponse#sendRedirect(String) sendRedirect 而后者将由 ActionMapperFactory 提供的 ActionMapper 由 struts2 框架处理比 Redirect 结果更好用。

要在这些结果类型的 URL 模式旁边传递数据,您可以使用

  1. 在操作重定向之间保存数据的 session 。
  2. ScopeInterceptor .


标签:Struts2
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号