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

标签 struts2

嗨,我是 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 - 如何将参数从一个 Action 传递到另一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959078/

相关文章:

java.lang.NoSuchMethodException : com. sun.proxy .....关于struts2 Action

java - 用户上传的文件放在哪里?

java - Struts 2 在操作类或 bean 中使用 getText

java - 在 Struts2-dojo 树控件中显示图标

java - Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

java - Struts2 - 编辑复合对象

java - 在java中读取.xlsx文件

java - 如果我有一个window.open,我会丢失我的cookie吗?

security - 阻止直接访问 Struts2 中的 *.jsp 和 *.action

java - Struts 2 使用状态索引