struts2之chain的使用


/**

* 實現功能表單提交給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賦值

**/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM