struts2 action间传参

XX的小石头 2013-07-08 12:08:08
在两个action间传值的时候,action1传的是一个字符串类型的参数,action2接收参数的是一个对象中的一个属性,跳转方式是chain,求教这样传值要怎样写?
...全文
196 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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;
	}
测试了下,没问题 页面显示了这个参数,希望对你有用
嗯,也是一种思路,谢谢

81,122

社区成员

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

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