struts2 action间传参

XX的小石头 2013-07-08 12:08:08
在两个action间传值的时候,action1传的是一个字符串类型的参数,action2接收参数的是一个对象中的一个属性,跳转方式是chain,求教这样传值要怎样写?
...全文
189 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
adobe2000 2013-07-08
  • 打赏
  • 举报
回复

                <action name="passParam" class="productStroageAction">
			<result type="redirectAction">
  				<param name="actionName">findTopics</param>
  				<param name="topicName">${topicName}</param>
			</result>
		</action>
		<action name="findTopics" class="productStroageAction" method="findTopics">
			<result name="success">/stroage/add.jsp</result>
		</action>

        public void passParam(){
		topicName = request.getParameter("topicName");
	}
	
        public String findTopics(){
		request.setAttribute("message", topicName);
		return "success";
	} 

         private String topicName;
	
	/**
	 * @return the topicName
	 */
	public String getTopicName() {
		return topicName;
	}

	/**
	 * @param topicName the topicName to set
	 */
	public void setTopicName(String topicName) {
		this.topicName = topicName;
	}
测试了下,没问题 页面显示了这个参数,希望对你有用
XX的小石头 2013-07-08
  • 打赏
  • 举报
回复
引用 5 楼 adobe2000 的回复:
只是传递参数的话,

<result name="topic" type="redirect-action">
<param name="actionName">findTopics</param>
<param name="topicId">${topicId}</param>
</result>

参数名一定要一样吗?

我写成<param name="query_entryvo">${billno}</param>会报上面的错误
adobe2000 2013-07-08
  • 打赏
  • 举报
回复
只是传递参数的话,

<result name="topic" type="redirect-action">
  <param name="actionName">findTopics</param>
  <param name="topicId">${topicId}</param>
</result>
XX的小石头 2013-07-08
  • 打赏
  • 举报
回复
引用 3 楼 adobe2000 的回复:
[quote=引用 2 楼 xh3210_ 的回复:] [quote=引用 1 楼 adobe2000 的回复:] 方法1:action 类里面 设置对象,get,set,struts2可以自动接收 方法2:重写这个方法,request,session也需要get,set下
@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request = arg0;
		session = request.getSession();		
	}
在页面通过request 接收 1.比较适合接收对象 2.比较适合接收单个属性,不过接收到的string,对类型有要求需要转化
get和set方法都有了,两个action之间跳转是不经过jsp页面的,直接action1执行完就跳转到action2,这样request还可以实现传值吗?[/quote] request不行,session可以,session的东西需要严格的管理,不推荐这么用,我建议配置拦截器吧[/quote] action1: private String billno; action2: private QueryEntryVO query_entryvo; 我要实现的就是把action1的billno传给query_entryvo对象里面的billno,这个不是只要在配置文件里面写就行了吗?还需要配置拦截器?
adobe2000 2013-07-08
  • 打赏
  • 举报
回复
引用 2 楼 xh3210_ 的回复:
[quote=引用 1 楼 adobe2000 的回复:] 方法1:action 类里面 设置对象,get,set,struts2可以自动接收 方法2:重写这个方法,request,session也需要get,set下
@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request = arg0;
		session = request.getSession();		
	}
在页面通过request 接收 1.比较适合接收对象 2.比较适合接收单个属性,不过接收到的string,对类型有要求需要转化
get和set方法都有了,两个action之间跳转是不经过jsp页面的,直接action1执行完就跳转到action2,这样request还可以实现传值吗?[/quote] request不行,session可以,session的东西需要严格的管理,不推荐这么用,我建议配置拦截器吧
XX的小石头 2013-07-08
  • 打赏
  • 举报
回复
引用 1 楼 adobe2000 的回复:
方法1:action 类里面 设置对象,get,set,struts2可以自动接收 方法2:重写这个方法,request,session也需要get,set下
@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request = arg0;
		session = request.getSession();		
	}
在页面通过request 接收 1.比较适合接收对象 2.比较适合接收单个属性,不过接收到的string,对类型有要求需要转化
get和set方法都有了,两个action之间跳转是不经过jsp页面的,直接action1执行完就跳转到action2,这样request还可以实现传值吗?
adobe2000 2013-07-08
  • 打赏
  • 举报
回复
方法1:action 类里面 设置对象,get,set,struts2可以自动接收 方法2:重写这个方法,request,session也需要get,set下
@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request = arg0;
		session = request.getSession();		
	}
在页面通过request 接收 1.比较适合接收对象 2.比较适合接收单个属性,不过接收到的string,对类型有要求需要转化
XX的小石头 2013-07-08
  • 打赏
  • 举报
回复
引用 7 楼 adobe2000 的回复:

                <action name="passParam" class="productStroageAction">
			<result type="redirectAction">
  				<param name="actionName">findTopics</param>
  				<param name="topicName">${topicName}</param>
			</result>
		</action>
		<action name="findTopics" class="productStroageAction" method="findTopics">
			<result name="success">/stroage/add.jsp</result>
		</action>

        public void passParam(){
		topicName = request.getParameter("topicName");
	}
	
        public String findTopics(){
		request.setAttribute("message", topicName);
		return "success";
	} 

         private String topicName;
	
	/**
	 * @return the topicName
	 */
	public String getTopicName() {
		return topicName;
	}

	/**
	 * @param topicName the topicName to set
	 */
	public void setTopicName(String topicName) {
		this.topicName = topicName;
	}
测试了下,没问题 页面显示了这个参数,希望对你有用
嗯,也是一种思路,谢谢
一、准备工作及实例 3 1.解压struts-2.1.6-all.zip 3 2.六个基本包 3 3.初识struts2配置文件 4 (1).web.xml文件 4 (2).struts.xml文件 4 (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何使用alt+/提示 4 6.实例 4 7.开启struts2自带的开发模式常量 6 8.vo传参模式 7 9.ModerDriven传参模式(不建议采用) 7 10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7.Action中的method属性 12 8.使用ForwardAction实现页面屏蔽。 13 8.使用default-Action配置统一访问 14 小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 com.opensymphony.xwork2.ActionChainResult 16 dispatcher 16 用来转向页面,通常处理JSP 16 org.apache.struts2.dispatcher.ServletDispatcherResult 16 redirect 16 重定向到一个URL 16 org.apache.struts2.dispatcher.ServletRedirectResult 16 redirectAction 16 重定向到一个Action 16 org.apache.struts2.dispatcher.ServletActionRedirectResult 16 plainText 16 显示源文件内容,如文件源码 16 org.apache.struts2.dispatcher.PlainTextResult 16 freemarker 16 处理FreeMarker模板 16 org.apache.struts2.views.freemarker.FreemarkerResult 16 httpheader 16 控制特殊http行为的结果类型 16 org.apache.struts2.dispatcher.HttpHeaderResult 16 stream 16 向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据。 16 org.apache.struts2.dispatcher.StreamResult 16 velocity 16 处理Velocity模板 16 org.apache.struts2.dispatcher.VelocityResult 16 xslt 16 处理XML/XLST模板 16 org.apache.struts2.views.xslt.XSLTResult 16 全局result: 17 动态Result:了解 18 12.异常处理 18 三、在Action获取Scope对象 19 方式一、与Servlet解耦合的非IOC方式 20 方式二、与Servlet解耦合的IOC方式 21 方式三、与Servlet耦合的非IOC方式 21 方式四、与Servlet耦合的IOC方式 22 四、OGNL与ValueStack(VS) 22 1.值栈入门 22 2.OGNL入门 24 3.普通方法访问 24 4.静态方法访问 24 5.默认类Math的访问 24 6.调用普通类的构造方法 25 7.集合对象初步 25 8.集合对象进阶 25 9.N语法top语法 26 10.获取Stack Context中的信息 26 11.总结$ # %的区别 27 12.总结OGNL[重点] 27 五、拦截器 28 1.概述strust2中的拦截器 28 2.自定义拦截器 28 方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 32 4.使用默认的execAndWait拦截器 33 5.
ThinkPHP v5.0 RC4 主要更新: [底层架构] 增加Request类 并支持自动注入 统一Composer的自动加载机制 增加Response类的子类扩展 增加File类用于上传和文件操作 取消模式扩展 SAE支持降权 优化框架入口文件 改进异常机制 App类输入/输出调整 单元测试的完美支持 增加新的控制台指令 取消系统路径之外的大部分常量定义 类库映射文件由命令行动态生成 包含应用类库 [数据库] 增加分表规则方法 增加日期和时表达式查询方法 增加分页查询方法 增加视图查询方法 默认保持数据表字段大小写 数据缓存自动更新机制 完善事务嵌套支持 改进存储过程数据读取 支持设置数据库查询数据集返回类型 [模型] 增加Merge扩展模型 模型支持动态查询 增加更多的类型自动转换支持 增加全局查询范围 toJson/toArray支持隐藏和增加属性输出 增加远程一对多关联 [其它] 日志存储结构调整 Trace调试功能从日志类独立并增强 原Input类功能并入Request类 类库映射文件采用命令行生成 包含应用类库 验证类的check方法data数据取消引用传参 路由增加MISS路由规则 路由增加路由别名功能 ThinkPHP软件介绍 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用 开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单 和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应 用开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践! ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。 ThinkPHP页面展示 相关阅读 同类推荐:站长常用源码

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧