首页 > 其他 > 详细

struts2之chain的使用

时间:2014-02-10 23:51:47      阅读:830      评论:0      收藏:0      [点我收藏+]

/**

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

**/

/**

* 1. 配置文件

**/

bubuko.com,布布扣
<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>
bubuko.com,布布扣

/**

* 2.java代码

**/

bubuko.com,布布扣
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;
   }
   
}
bubuko.com,布布扣
bubuko.com,布布扣
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;
   }

   
}
bubuko.com,布布扣

 

/**
* 说明

* 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的使用

原文:http://www.cnblogs.com/jay-blog/p/3543356.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!