两个Action 动态传参数
研究了近两天的时间,终于把一个很简单的问题给搞定了,那它是什么问题呢?就是Struts2的两个Action之间传参的问题。
需求功能是这样:Action1 获取数据库配置内容,得到相应Model的 动态URL ,这里的URL 有的是Action有的是JSP页面。
1.使用result 类型中的 redirect 类型,如下:
那么 param1 和 items 这两个参数都无法从目标Action里得到,如果想得到的话只能用 objectId=${objectId}¶m1=${param1} 这种方式,或者用 session来实现,这样就有点复杂了,而且使用起来也相当的不方便。后来又尝试了第二种方式:
2.使用result类型中的redirect-action类型 如下:
此时,result之间不能再设其它的自定义的参数了,因为 redirect-action对应的是 org.apache.struts2.dispatcher.ServletActionRedirectResult ,而actionName和namespace是它的两个属性,还有一个重要属性就是methodName,如果要再加其它自己定的参数,只能扩展该类了。我在此基础上,又在result 之外添加了几个param 参数,如:
但是还是不能将 param1和param2两个参数传到目标Action中。既然Struts2有这种机制,那么它就一定能够实现,两个Action的动态传参,只是我对它不了解而已,后来,我又翻出来Strut2的源码和XWork的源码,再结果网上的资料,又尝试了第三种方式,终于可以了。
3.使用reulst 类型中chain类型 如下:
这样就可以实现传参了,这里的参数所有对象都可以传,包括map,List,set 等集合也可以。同时这里还需要注意一个小问题,chain这种类型是XWork中的result类型,它对应的类是:
这是小弟在使用Struts2时,遇到两个Action动态传参的问题时总结的心得,希望对个位同仁有所帮助,不当之处,请多指教。
本文出自 http://jakemanse.blog.51cto.com/1198141/273871
研究了近两天的时间,终于把一个很简单的问题给搞定了,那它是什么问题呢?就是Struts2的两个Action之间传参的问题。
需求功能是这样:Action1 获取数据库配置内容,得到相应Model的 动态URL ,这里的URL 有的是Action有的是JSP页面。
1.使用result 类型中的 redirect 类型,如下:
<result name="success" type="redirect">${dynamicUrl}?objectId=${objectId}¶m1=${param1}</result> 这样传参才能达到Action取参数的需要,如果要是加上 : <param name="param1">${param1}</param> <param name="items">${items}</param>
那么 param1 和 items 这两个参数都无法从目标Action里得到,如果想得到的话只能用 objectId=${objectId}¶m1=${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
发表评论
-
Spring MVC Controller单例陷阱
2014-09-12 10:01 970Spring MVC Controller默认是单例的: 单 ... -
Spring MVC模型(Model)层和视图(View)层
2014-04-20 18:57 0Spring MCV中Model层是View层的数据容器,Js ... -
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2014-04-20 18:52 3115spring mvc处理方法支持如下的返回方式:ModelAn ... -
spring mvc常用注解@Component @Controller @Service @Repository
2014-03-13 16:10 9240注解用了之后,会在*.xml文件中大大减少配置量。以前我们每个 ... -
applicationContext.xml 配置文件在web.xml中的写法
2014-03-11 16:28 2826applicationContext.xml 配置文件的一些认 ... -
SpringMVC和Struts2的比较
2014-02-27 19:12 786通俗说Spring的作用 Spring ... -
Struts-config.xml配置文件《action-mappings》元素的详解
2014-02-26 13:12 2493action-mappings 该元素用于将Action元素定 ... -
使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码
2014-02-24 23:02 1049[size=medium]通过网上学习,要求修改Hiberna ... -
在web.xml中通过contextConfigLocation配置spring
2014-02-24 21:19 2366在web.xml中通过contextConfigLocatio ... -
Struts-config.xml配置action-mappings元素略计
2014-02-24 16:58 674action-mappings 该元素用于将Action元素 ... -
Spring的DataAccessException略记
2013-07-08 19:23 2533Spring的DAO框架没有抛出 ... -
Result Type(Struts.xml配置)
2013-06-25 08:35 659一个提交到服务器的处理通常可以分为两个阶段: 第一个阶段查询服 ... -
ibatis常用标记略记
2013-06-23 21:12 1020isNull判断property字段是否是null,用isEm ... -
ibatis的iterate使用
2013-06-23 20:38 1121ibatis的iterate使用 Iterate:这属性遍历 ... -
spring入门之—第一步
2013-06-13 15:26 758注: 本文用的是spring-framework-3.1.1. ... -
Spring的ApplicationContext加载多个配置文件的三种方式
2013-06-13 15:09 18741.第一种,使用数组方式 ApplicationConte ... -
详解iBaits中SqlMapClientTemplate的使用
2013-06-05 16:07 0pache iBatis(现已迁至Google Code下发展 ... -
Struts2.0默认支持多种格式的result type
2013-06-05 16:00 904<action name="attachmen ... -
maven+ssi对oracle实现增删改查(二)
2013-06-05 12:06 12421.index.jsp访问项目默认页面 <%@ page ... -
maven+ssi对oracle实现增删改查(一)
2013-06-05 11:40 1265-. 1.Oracle10g 的表结构语句,需要内容的自己添加 ...
相关推荐
创建两个JSP页面,一个是登录表单(login.jsp),另一个是登录成功后显示的页面(success.jsp)和登录失败显示的页面(error.jsp)。 ```html <!-- login.jsp --> <form action="login.action" method="post"> ...
在开发Java Web应用程序时,尤其是使用Struts2或者Spring MVC等MVC框架时,我们经常需要在多个Action之间进行跳转并传递参数。这在构建动态、交互性强的Web应用中是必不可少的。本项目旨在演示如何在自定义的Action...
Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建动态、结构良好的Web应用程序。在Struts2中,结果(Result)是动作(Action)执行后跳转的目标,它可以是一个JSP、Servlet或其他资源。有时...
struts2中使用ognl表达式语言传参的方法,简化操作,通过jsp页面传递到Action中
在上面的`TestAction`类中,我们定义了两个方法:`execute()`和`doAdd()`。默认情况下,如果没有指定`method`属性,则会调用`execute()`方法。如果希望调用其他方法,可以在`<action>`标签中使用`method`属性指定。...
Struts2是一个流行的Java web框架,它用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含...
- `${param1}</param>` 和 `<param name="param2">${param2}</param>`:这两个参数将在action2中被设置。 - **注意事项**: - `param1`和`param2`需要在action1中定义对应的getter和setter方法,以便能够获取到...
在 Struts2 中使用 `redirect-action` 来实现 Action 之间的跳转是一种常见的做法,特别是在需要按顺序执行多个 Action 的业务场景中。通过这种方式,不仅可以保持应用程序的良好结构,还能有效地组织业务流程。同时...
资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...
在Struts2的动态方法调用中,URL路径可以解析成Action类的实例和一个要执行的方法。例如,`/module/action` 可能会映射到 `ModuleAction` 类并调用其 `action` 方法。这种机制依赖于Struts2的核心组件,如...
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认的表达式语言,用于在Action与视图之间传递数据,支持动态属性访问和方法调用。 6. **插件系统**:Struts2拥有丰富的插件库,如Tiles、...
根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...
Struts2框架确实可以通过超链接传递参数,这是它的一个基本特性。在Struts2中,你可以使用`<s:iterator>`标签遍历集合,并在超链接中嵌入需要传递的参数。下面详细介绍如何实现这个功能。 1. **超链接与参数传递**...
《Struts2 in Action》中文版是一本深入探讨Struts2框架的专业书籍,该书不仅提供了详尽的理论知识,还包含了大量的实战案例,对于希望掌握Struts2框架的开发者来说,是一本不可或缺的参考书。 ### Struts2框架概览...
利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...
《Struts2 in Action》是一本深入探讨Struts2框架的权威著作,中文版的发布使得国内开发者能够更方便地理解和应用这一强大的Java Web开发框架。Struts2是Apache软件基金会旗下的一个开源项目,它是MVC(Model-View-...
本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...
5. **OGNL表达式**: OGNL(Object-Graph Navigation Language)是Struts2的默认表示语言,用于在Action、值栈和视图之间传递数据。 6. **Tiles和FreeMarker**: Struts2可以与Tiles框架集成,用于创建可重用的页面...
它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在诸多差异。了解这些差异对于选择合适的技术栈、优化开发流程至关重要。 #### Action处理机制 - **Struts1**:...
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。...结合这两个资源,你可以更深入地理解和实践Struts2框架。