`
SoloTerran
  • 浏览: 8531 次
  • 性别: 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么?
分享到:
评论

相关推荐

    J2EE考试题目及答案.pdf

    J2EE 考试题目及答案 J2EE 是 Java 企业版平台的缩写,指的是 Java 语言中用于...dispatcher 和 chain 是服务器端跳转,所以客户端只发起一次请求_REDIRECT 和 redirectAction 是客户端跳转,所以客户端发起两次请求

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

    本篇将深入探讨Struts2中四种常见的Result类型:dispatcher、redirect、chain和redirectAction。 1. **dispatcher**: 这是最基本且最常见的Result类型,它代表服务器端的转发(Server-side Forward)。当你配置`...

    J2EE考试题目及答案定义.pdf

    Struts.xml中Result的类型有四种:dispatcher、redirect、chain、redirectAction。dispatcher和chain是服务器端跳转,所以客户端只发起一次请求;redirect和redirectAction是客户端跳转,所以客户端发起两次请求。 ...

    struts应用5

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

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

    本笔记将深入探讨`Result`标签的`type`属性以及其不同类型的用法,包括`dispatcher`、`chain`、`redirect`、`redirectAction`和`stream`。 首先,`dispatcher`是最常用的`Result`类型,它将请求转发到指定的页面。...

    SSH框架部分常见面试题.pdf

    Struts2 的 Result 类型有四种:Dispatcher、Redirect、Chain、RedirectAction。Dispatcher 跳转到 URL,通常是 JSP 服务器端;Redirect 重定向到 URL,通常是 JSP 客户端;Chain 跳转到一个 Action,服务器端;...

    Struts2_result返回类型

    除了以上列出的,还有一些已废弃的返回类型,如`redirect-action`和`plaintext`,它们分别对应于`redirectAction`和`plainText`,但在Struts 2.1.0之后不再推荐使用,而是推荐使用camelCase命名的版本。 选择正确的...

    Framework学习文档

    Framework学习文档是关于Struts2、Mybatis、JavaScript和jQuery的详细笔记,涵盖了这些技术的基本概念、架构、配置、使用方法等方面的知识点。 一、Struts2框架 1. Struts2是典型的MVC框架,在整个MVC框架中充当...

    Struts2 result和type

    通过对Struts2中`Result`与`Type`的理解和运用,可以更加灵活地控制页面的流向和展示形式,从而提高应用程序的可维护性和扩展性。希望本文能帮助读者更好地掌握这些核心概念,并在实际项目开发中发挥出应有的作用。

    Struts2 Result类型

    6. **Redirect Action Result (type="redirectAction")** Redirect Action Result用于重定向到另一个Action。这不仅改变了URL,还意味着新的Action上下文,适合处理多级导航或分步表单。 7. **Stream Result ...

    关于struts的部分小结

    `type`定义了结果的类型,例如`chain`用于请求转发,`dispatcher`用于转发到JSP页面,`redirect`表示重定向,`redirectAction`则是重定向到另一个Action,而`stream`类型则用于文件下载,通过流的方式处理数据。...

    Struts2--result配置的各种视图转发类型

    Struts2是一个强大的MVC框架,它为Java Web应用程序提供了结构和控制机制。在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨...

    牧紫小岩的Struts2学习笔记

    Struts2支持多种结果类型,包括`dispatcher`、`redirect`、`chain`和`redirectAction`,每种类型都有其特定用途,如重定向、转发或链式调用等。全局结果集`global-result`则允许开发者为框架设置默认的结果映射,...

    struts2的action的几种result type说明

    6. **redirectAction**: ServletActionRedirect Result Type类似于redirect,但它允许你在重定向时保留Action上下文,通常用于内部跳转。`class="org.apache.struts2.dispatcher.ServletActionRedirectResult"`。 7...

    java必备知识点大全.pdf

    Struts2中result中的type类型:Struts2中result可以是 dispatcher、chain、redirect、redirectAction等类型。 Struts2标签:Struts2提供自定义的标签来简化JSP页面的开发。 SSI整合:SSI即Server Side Include,...

    struts2中的url

    这可以通过设置 `&lt;result&gt;` 元素中的 `type` 属性为 `"redirectAction"` 或 `"redirect"` 来实现。具体配置如下: - **请求重定向至Action**: ```xml &lt;result name="upFileOk" type="redirectAction"&gt;test_...

    struts2 API

    - Struts2支持多种结果类型,如 `dispatcher`(默认),`stream`,`redirect` 和 `redirectAction` 等,用于控制动作执行后如何展示结果页面。 3. **拦截器(Interceptor)**: - 拦截器是Struts2框架的核心组件...

    Struts2学习资源Result part1.rar

    6. **chain**: 连接Result,允许在一个Action之后执行另一个Action,而不需要客户端进行新的请求。 7. **tiles**: 结合Tiles框架使用,用于构建复杂的页面布局。 学习Struts2 Result的使用,不仅可以提升应用的...

Global site tag (gtag.js) - Google Analytics