/**

* 实现功能表单提交给action1先处理,再交由action2进行处理,中间传递参数a,b

**/

/**

* 1. 配置文件

**/

<action name="action1" class="com.test.Action1">
  <result name="success" type="chain">
    action2
  </result>
</action>
<action name="action2" class="com.test.Action2">
  <result name="success" type="chain">
    /index.jsp
  </result>
</action>

/**

* 2.java代码

**/

public class Action1{
//input
private String a;
//output
private String c; public String execute(){
return "success";
} public String getA(){
return a;
} public void setA(String a){
this.a = a;
} public String getB(){
return c+" getB ";
} public void setC(String c){
this.c = c;
} }
public class Action2{

    private String a;
private String b;
private String c; public String execute(){
System.out.println(a);
System.out.println(b);
System.out.println(c);
return "success";
} public String getA(){
return a;
} public void setA(String a){
this.a = a;
} public void setB(String b){
this.b = b;
} public String getB(){
return b;
} public void setC(String c){
this.c = c;
} }

/**
* 说明

* 1)配置文件中result的type属性设置为chain, result标签内写传给的action的name属性值

* 2)action之间传递参数的实质是靠set和get方法,有没有对应的属性或属性名字叫什么其实没关系,一般情况下都是先写属性,再生成对应的set和get方法,这是

标准的做法,但不一定要这样做, 要想把action1中的参数a传递给action2中的b,只需action1中提供getXX方法返回a的值,action2中提供setXX方法给b

赋值即可

* 3)特别需要注意的一点是action1传给action2时除了拦截器chain起作用外,表单处理拦截器param也会起作用,而且param在chain之后起作用,故如果param和

chain都给同一个参数赋值的话,param会覆盖chain的效果,例如表单提交了一个c, action1里对c进行了处理, 处理结果还是保留在c上,接下来你想把处理后

的c传给action2处理,action2也用c来接收,这时候就会出现action2中的c的值是表单提交过来的值而不是action1传过来的值,给你一种参数没传递的错觉,

其实是被覆盖了,一般我的做法是action1中提供getB方法返回c的值,action2中不要提供setC而是提供setB来给c赋值

**/

struts2之chain的使用的更多相关文章

  1. 浅谈struts2之chain

    转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...

  2. struts2 中redirectAction如何传递参数!

    在struts2中,初学者因为参数传递的问题往往会出现一些错误. 比如页面跳转的问题,在用户注册中,以一下代码作为案例: <struts> <constant name=" ...

  3. struts升级到最高版本后遇到的问题。关于actionmessage传递问题。

    Struts2升级到最新版本遇到的一些问题 首先是更换对应的jar,如asm.common.ongl.struts等等.更换后发现系统启动不了,按照网上的介绍,先后又更新了slf4j-log4j12- ...

  4. java:Springmvc框架1(基本配置,注解配置,转换器引入)

    1.springmvc01:(基本配置) web.xml: <?xml version="1.0" encoding="UTF-8"?> <w ...

  5. 【struts2】名为chain的ResultType

    1)基本使用 名称为“chain”的ResultType,在struts-default.xml里的配置如下: <result-type name="chain" class ...

  6. Struts2 关于返回type="chain"的用法.

    1.转自:https://blog.csdn.net/wuye/article/details/73274852   功能与redirect的action转发类似,不过与redirectaction转 ...

  7. struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction

    一.ServletActionContext  和 actionContext HttpServletRequest request=ServletActionContext.getRequest() ...

  8. struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)

    dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp) Xml代码 : <result name="success">/main.jsp</re ...

  9. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

随机推荐

  1. 关于 knockout js 学习中的疑问 (1)

    最近刚刚学习knockout中遇到如下问题: 1.在给viewModel定义一个方法时,有时后面跟 的this,有的时候没有 如下所示: this.fullName = ko.computed(fun ...

  2. 阿里云 Debian Linux 布署记录

    摘要: 主要安装了web环境,java+tomcat+mysql+nginx(暂没没用) 数据盘挂载在/data下,项目,索引都放/data目录下 java,tomcat,mysql程序都在/root ...

  3. iOS-设计模式之Block

    Block是代码块, Block定义 返回值 (^ 块名)(参数1,参数2…); 在定义Block的时候可以使用typedef 重命名一下. typedef void(^blockName)(NSSt ...

  4. Java坑一

    public class Test { public static void main(String[] args) { Integer a = 12; Integer b = 12; System. ...

  5. linux cat命令的<<EOF

    初初开始学习linux的命令,只对linux一些简单命令有一些了解! 首先我看到网上有一些创建一个文件采用的命令是(mkdir创建文件夹):cat > test1.txt <<EOF ...

  6. 为采集动态网页安装和测试Python Selenium库

    1. 引言上一篇<为编写网络爬虫程序安装Python3.5>中测试小例子对静态网页做了一个简单的采集程序,而动态网页因为需要动态加载js获取数据,所以使用urllib直接openurl已经 ...

  7. python bottle框架(WEB开发、运维开发)教程

    教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架 ...

  8. FatMouse's Speed(HDU LIS)

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. SignalR在Xamarin Android中的使用

    原文:SignalR在Xamarin Android中的使用 ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 ...

  10. LLinux系统编程(10)——进程间通信之管道

    管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别.有名管道叫named ...