`
SoloTerran
  • 浏览: 8369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于chain,redirect和redirectAction

阅读更多
自己在实践的时候发现了一些问题,比如:需要将表单中的数据封装在User中,提交给firstAction处理,再将处理后的user传递给secondAction作处理。
表单如下:
<s:form action="firstAction">
    <s:textfield name="user.name" label="name" />
    <s:password name="user.password" label="password" />
    <s:submit />
</s:form>

UserAction.java代码如下:
package st.action;

import com.opensymphony.xwork2.Action;

import st.bean.User;

public class UserAction {
	
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	public String firstAction() {
		user.setName(user.getName() + "_FIRST");
		user.setPassword(user.getPassword() + "_FIRST");
		System.out.println(user.getName() + "," + user.getPassword());
		System.out.println(this + "," + user);
		return Action.SUCCESS;
	}
	
	public String secondAction() {
		user.setName(user.getName() + "_SECOND");
		user.setPassword(user.getPassword() + "_SECOND");
		System.out.println(user.getName() + "," + user.getPassword());
		System.out.println(this + "," + user);
		return Action.SUCCESS;
	}
}


起先我是使用redirectAction,配置如下:
<action name="firstAction" class="st.action.UserAction" method="firstAction">
    <result name="success" type="redirectAction">
        <param name="actionName">secondAction</param>
        <param name="user.name">${user.name}</param>
        <param name="user.password">${user.password}</param>
    </result>
</action>
<action name="secondAction" class="st.action.UserAction" method="secondAction">
    <result>result.jsp</result>
</action>

通过打印出来的结果,可以发现虽然user的值被传递给了secondAction,但其实是重新实例化了一个user。如果要做到传递对象貌似没有什么办法,而且参数内容也被显示在了地址栏上。
使用redirect也是同样的问题。
如果使用chain又是另外一回事儿了:
<action name="firstAction" class="st.action.UserAction" method="firstAction">
    <result name="success" type="chain">secondAction</result>
</action>
<action name="secondAction" class="st.action.UserAction" method="secondAction">
    <result>result.jsp</result>
</action>

结果,前一次user处理后的值并没有传给secondAction,secondAction只是处理表单上的数据。
如果想要完成user对象在action中的传递,难道一定要借助session么?
分享到:
评论

相关推荐

    struts2中result类型之redirectAction

    struts2中result类型之redirectAction

    SSH笔记-result标签的type的使用

    SSH笔记 result标签里面 type的使用 demo包括dispatcher、chain、redirect、redirectAction、stream

    acton之间传值

    action之间传值用chain,redirectAction应该不行

    redirectaction 出现404 - result 'null' not found例子演示

    redirectaction 出现404 - result 'null' not found例子演示

    struts2重定向实例源码

    struts result类型中redirect与redirectAction的使用 包括参数传递。

    struts应用5

    ). result 节点的 name、type 属性的具体含义 ...2)、讲授 dispatcher、redirect、redirectAction、chain 等结果类型 3)、讲授 Struts2 的 exception 映射 4)、 讲授 action 配置的通配符 5)、 讲授动态方法调用

    java考试系统

    myeclipse制作的资源考试 1.下面四个选项目,( )最适合用作专业的商用J2EE服务器 (A)Tomcat (B)Weblogic (C)Jetty (D)Jboss ~ 2.下列说法中描述错误的是( ) ...(C)redirectAction (D)plaintext

    Apache-Struts-v4

    Apache Struts 2.0.0至2.3.15允许远程攻击者通过带有特制(1)action:,(2)redirect:或(3)redirectAction:前缀的参数来执行任意OGNL表达式。 CVE-2017-5638 Apache Struts 2 2.3.x之前的2.3.x版和2.5.10.1...

    struts-2.3.15.1

    漏洞根源在于,DefaultActionMapper类支持以"action:"、"redirect:"、"redirectAction:"作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用...

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    Struts2 in action中文版

    8.2.3 ServletActionRedirectResult,也叫做redirectAction 188 8.3 JSP替代品 189 8.3.1 VelocityResult,也叫做velocity 189 8.3.2 FreemarkerResult,也叫做freemarker 191 8.4 全局结果 192 8.5 小结 193 第四...

    Struts2学习笔记(8)-Result常用类型

    主要介绍Struts2中Result四种常用的类型的用法,希望能给大家做一个参考。

    网上商城需求报告

    主要在业务层和数据访问层使用 junit:单体测试工具,用于测试业务或者数据访问方法 -----------项目开发流程------------ UML模型图:IBM Rose,Microsoft Visio E-R模型图:PowerDesign 市场部,客户关系,售前技术...

    dangdang和smartstruts2.rar

    &lt;result name="success" type="redirectAction"&gt; &lt;param name="namespace"&gt;/main &lt;param name="actionName"&gt;main.do &lt;result name="cart" type="redirectAction"&gt; &lt;param name="namespace"&gt;/...

    javaee三大框架整合宅急送项目lib包

    &lt;result name="receiveinfocompleteSUCCESS" type="redirectAction"&gt;task_findReceiveInfoTask 在JBPM在流程结束时,发生异常 org.springframework.dao.DataIntegrityViolationException: could not delete: ...

Global site tag (gtag.js) - Google Analytics