`

Struts2 两个Action之间动态传参

阅读更多
两个Action 动态传参数
       研究了近两天的时间,终于把一个很简单的问题给搞定了,那它是什么问题呢?就是Struts2的两个Action之间传参的问题。
       需求功能是这样:Action1 获取数据库配置内容,得到相应Model的 动态URL ,这里的URL 有的是Action有的是JSP页面。


        1.使用result 类型中的  redirect 类型,如下:
     
    <result name="success" type="redirect">${dynamicUrl}?objectId=${objectId}&param1=${param1}</result> 
          这样传参才能达到Action取参数的需要,如果要是加上 : 
         <param name="param1">${param1}</param> 
        <param name="items">${items}</param> 


          那么 param1 和 items 这两个参数都无法从目标Action里得到,如果想得到的话只能用  objectId=${objectId}&param1=${param1} 这种方式,或者用 session来实现,这样就有点复杂了,而且使用起来也相当的不方便。后来又尝试了第二种方式:
        
         2.使用result类型中的redirect-action类型  如下:
     
  <result name="success" type="redirect-action"> 
             <param name="actionName">${actionName}</param> 
              <param name="namespace">${namespace}</param> 
        </result> 

         此时,result之间不能再设其它的自定义的参数了,因为 redirect-action对应的是  org.apache.struts2.dispatcher.ServletActionRedirectResult ,而actionName和namespace是它的两个属性,还有一个重要属性就是methodName,如果要再加其它自己定的参数,只能扩展该类了。我在此基础上,又在result 之外添加了几个param 参数,如:
      

      
 <param name="param1">${param1}</param> 
        <param name="param2">${param2}</param> 
        <result name="success" type="redirect-action"> 
             <param name="actionName">${actionName}</param> 
             <param name="namespace">${namespace}</param> 
        </result>

     但是还是不能将 param1和param2两个参数传到目标Action中。既然Struts2有这种机制,那么它就一定能够实现,两个Action的动态传参,只是我对它不了解而已,后来,我又翻出来Strut2的源码和XWork的源码,再结果网上的资料,又尝试了第三种方式,终于可以了。

  3.使用reulst 类型中chain类型 如下:

 
 <action name="getTemplate" class="tabAction" method="getTemplateByParas"> 
         <param name="objectId">${objectId}</param> 
        <param name="param1">${param1}</param> 
        <param name="items">${items}</param> 
        
        <result name="success" type="chain"> 
         <param name="actionName">${actionName}</param> 
         <param name="namespace">${namespace}</param> 
        </result> 
         
  </action> 


       这样就可以实现传参了,这里的参数所有对象都可以传,包括map,List,set 等集合也可以。同时这里还需要注意一个小问题,chain这种类型是XWork中的result类型,它对应的类是:
  
    com.opensymphony.xwork2.ActionChainResult .   这里需要注意一个小问题, actionName,namespace都是他的属性,所以对于传过的URL参数要做一下处理。 
       actionName必须是Action的名称,namespace是他命名空间,必须以"/"开头,如: 
       /tab/getTemplate.action       则 namespace="/tab"   ;  actionName=”getTemplate“;  



这是小弟在使用Struts2时,遇到两个Action动态传参的问题时总结的心得,希望对个位同仁有所帮助,不当之处,请多指教。
本文出自 http://jakemanse.blog.51cto.com/1198141/273871
分享到:
评论

相关推荐

    struts2入门(传参)

    创建两个JSP页面,一个是登录表单(login.jsp),另一个是登录成功后显示的页面(success.jsp)和登录失败显示的页面(error.jsp)。 ```html &lt;!-- login.jsp --&gt; &lt;form action="login.action" method="post"&gt; ...

    多action之间跳转传参问题

    在开发Java Web应用程序时,尤其是使用Struts2或者Spring MVC等MVC框架时,我们经常需要在多个Action之间进行跳转并传递参数。这在构建动态、交互性强的Web应用中是必不可少的。本项目旨在演示如何在自定义的Action...

    struts2 向结果传参数

    Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建动态、结构良好的Web应用程序。在Struts2中,结果(Result)是动作(Action)执行后跳转的目标,它可以是一个JSP、Servlet或其他资源。有时...

    struts2传参

    struts2中使用ognl表达式语言传参的方法,简化操作,通过jsp页面传递到Action中

    struts 2 action 动态调用

    在上面的`TestAction`类中,我们定义了两个方法:`execute()`和`doAdd()`。默认情况下,如果没有指定`method`属性,则会调用`execute()`方法。如果希望调用其他方法,可以在`&lt;action&gt;`标签中使用`method`属性指定。...

    struts2 使用action属性接收中文参数(post提交)

    Struts2是一个流行的Java web框架,它用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含...

    struts2 action跳转action传参数

    - `${param1}&lt;/param&gt;` 和 `&lt;param name="param2"&gt;${param2}&lt;/param&gt;`:这两个参数将在action2中被设置。 - **注意事项**: - `param1`和`param2`需要在action1中定义对应的getter和setter方法,以便能够获取到...

    struts2 result转向到action

    在 Struts2 中使用 `redirect-action` 来实现 Action 之间的跳转是一种常见的做法,特别是在需要按顺序执行多个 Action 的业务场景中。通过这种方式,不仅可以保持应用程序的良好结构,还能有效地组织业务流程。同时...

    Struts2从一个带参数action跳转到另一个action

    资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...

    Struts2 动态方法调用(十三)

    在Struts2的动态方法调用中,URL路径可以解析成Action类的实例和一个要执行的方法。例如,`/module/action` 可能会映射到 `ModuleAction` 类并调用其 `action` 方法。这种机制依赖于Struts2的核心组件,如...

    Struts2 in action中文版+配套源代码

    5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认的表达式语言,用于在Action与视图之间传递数据,支持动态属性访问和方法调用。 6. **插件系统**:Struts2拥有丰富的插件库,如Tiles、...

    Struts 2实战 Struts 2 in action 的中文版

    根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...

    struts2是否可以通过超链接传参

    Struts2框架确实可以通过超链接传递参数,这是它的一个基本特性。在Struts2中,你可以使用`&lt;s:iterator&gt;`标签遍历集合,并在超链接中嵌入需要传递的参数。下面详细介绍如何实现这个功能。 1. **超链接与参数传递**...

    Struts2 in action 中文版

    《Struts2 in Action》中文版是一本深入探讨Struts2框架的专业书籍,该书不仅提供了详尽的理论知识,还包含了大量的实战案例,对于希望掌握Struts2框架的开发者来说,是一本不可或缺的参考书。 ### Struts2框架概览...

    一个Action多方法调用的Struts 2的应用程序

    利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...

    Struts2 in action 中文版.pdf

    《Struts2 in Action》是一本深入探讨Struts2框架的权威著作,中文版的发布使得国内开发者能够更方便地理解和应用这一强大的Java Web开发框架。Struts2是Apache软件基金会旗下的一个开源项目,它是MVC(Model-View-...

    struts2的API耦合与动态方法调用

    本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...

    struts2 in action 中文版 英文版 源代码 合集

    5. **OGNL表达式**: OGNL(Object-Graph Navigation Language)是Struts2的默认表示语言,用于在Action、值栈和视图之间传递数据。 6. **Tiles和FreeMarker**: Struts2可以与Tiles框架集成,用于创建可重用的页面...

    struts1和struts2的区别

    它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在诸多差异。了解这些差异对于选择合适的技术栈、优化开发流程至关重要。 #### Action处理机制 - **Struts1**:...

    Struts2框架及注释和用法

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。...结合这两个资源,你可以更深入地理解和实践Struts2框架。

Global site tag (gtag.js) - Google Analytics