自己在实践的时候发现了一些问题,比如:需要将表单中的数据封装在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 考试题目及答案 J2EE 是 Java 企业版平台的缩写,指的是 Java 语言中用于...dispatcher 和 chain 是服务器端跳转,所以客户端只发起一次请求_REDIRECT 和 redirectAction 是客户端跳转,所以客户端发起两次请求
本篇将深入探讨Struts2中四种常见的Result类型:dispatcher、redirect、chain和redirectAction。 1. **dispatcher**: 这是最基本且最常见的Result类型,它代表服务器端的转发(Server-side Forward)。当你配置`...
Struts.xml中Result的类型有四种:dispatcher、redirect、chain、redirectAction。dispatcher和chain是服务器端跳转,所以客户端只发起一次请求;redirect和redirectAction是客户端跳转,所以客户端发起两次请求。 ...
). result 节点的 name、type 属性的具体含义 ...2)、讲授 dispatcher、redirect、redirectAction、chain 等结果类型 3)、讲授 Struts2 的 exception 映射 4)、 讲授 action 配置的通配符 5)、 讲授动态方法调用
本笔记将深入探讨`Result`标签的`type`属性以及其不同类型的用法,包括`dispatcher`、`chain`、`redirect`、`redirectAction`和`stream`。 首先,`dispatcher`是最常用的`Result`类型,它将请求转发到指定的页面。...
Struts2 的 Result 类型有四种:Dispatcher、Redirect、Chain、RedirectAction。Dispatcher 跳转到 URL,通常是 JSP 服务器端;Redirect 重定向到 URL,通常是 JSP 客户端;Chain 跳转到一个 Action,服务器端;...
除了以上列出的,还有一些已废弃的返回类型,如`redirect-action`和`plaintext`,它们分别对应于`redirectAction`和`plainText`,但在Struts 2.1.0之后不再推荐使用,而是推荐使用camelCase命名的版本。 选择正确的...
Framework学习文档是关于Struts2、Mybatis、JavaScript和jQuery的详细笔记,涵盖了这些技术的基本概念、架构、配置、使用方法等方面的知识点。 一、Struts2框架 1. Struts2是典型的MVC框架,在整个MVC框架中充当...
通过对Struts2中`Result`与`Type`的理解和运用,可以更加灵活地控制页面的流向和展示形式,从而提高应用程序的可维护性和扩展性。希望本文能帮助读者更好地掌握这些核心概念,并在实际项目开发中发挥出应有的作用。
6. **Redirect Action Result (type="redirectAction")** Redirect Action Result用于重定向到另一个Action。这不仅改变了URL,还意味着新的Action上下文,适合处理多级导航或分步表单。 7. **Stream Result ...
`type`定义了结果的类型,例如`chain`用于请求转发,`dispatcher`用于转发到JSP页面,`redirect`表示重定向,`redirectAction`则是重定向到另一个Action,而`stream`类型则用于文件下载,通过流的方式处理数据。...
Struts2是一个强大的MVC框架,它为Java Web应用程序提供了结构和控制机制。在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨...
Struts2支持多种结果类型,包括`dispatcher`、`redirect`、`chain`和`redirectAction`,每种类型都有其特定用途,如重定向、转发或链式调用等。全局结果集`global-result`则允许开发者为框架设置默认的结果映射,...
6. **redirectAction**: ServletActionRedirect Result Type类似于redirect,但它允许你在重定向时保留Action上下文,通常用于内部跳转。`class="org.apache.struts2.dispatcher.ServletActionRedirectResult"`。 7...
Struts2中result中的type类型:Struts2中result可以是 dispatcher、chain、redirect、redirectAction等类型。 Struts2标签:Struts2提供自定义的标签来简化JSP页面的开发。 SSI整合:SSI即Server Side Include,...
这可以通过设置 `<result>` 元素中的 `type` 属性为 `"redirectAction"` 或 `"redirect"` 来实现。具体配置如下: - **请求重定向至Action**: ```xml <result name="upFileOk" type="redirectAction">test_...
- Struts2支持多种结果类型,如 `dispatcher`(默认),`stream`,`redirect` 和 `redirectAction` 等,用于控制动作执行后如何展示结果页面。 3. **拦截器(Interceptor)**: - 拦截器是Struts2框架的核心组件...
6. **chain**: 连接Result,允许在一个Action之后执行另一个Action,而不需要客户端进行新的请求。 7. **tiles**: 结合Tiles框架使用,用于构建复杂的页面布局。 学习Struts2 Result的使用,不仅可以提升应用的...