posts - 0,  comments - 1,  trackbacks - 0

          可以根據Action屬性的不同將它分為兩類:Field-Driven(屬性驅動) Action和Model-Driven(模型驅動) Action。
          一、Field-Driven(屬性驅動)Action,Action擁有自己的屬性,這些屬性一般是Java的基本類型。表單字段直接和Action的屬性 對應。

          二、實現了modelDriven接口可以在action中直接獲得例如User對象,它會將Object getModel()取得的User放到ValueStack中。可以理解為將這個User的屬性追加到Action中。它主要是作用是實現類似 Struts的FormBean功能。

          在struts2中,提供了一種直接使用領域對象的方式,就是讓action實現com.opensymphony.xwork2.ModelDriven接口,ModelDriven讓你可以直接操作應用程序中的領域對象,允許你在web層和業務層使用相同的對象。

          ModelDriven接口只有一個方法

                  public Object getModel() {
          return null;
          }

          該方法返回一個用于接收用戶輸入數據的對象模型,在這個模型對象中的屬性可以直接通過(屬性名)userName來訪問,而不需要使用(對象名.屬 性名)user.userName這種格式來訪問了,在action也不需要對對象提供getter和setter方法了,但是必須要在action中進 行new操作

          如下

          // ModelDriven要使用泛型哦

          public class LoginAction extends ActionSupport implements ModelDriven<User>{

          private static final long serialVersionUID = -6434128483294080524L;

          //這里必須要new
          private User user=new User();
          public String login() throws Exception {
          // TODO Auto-generated method stub  
          return SUCCESS;
          }

          //這里是實現接口方法

          @Override
          public User getModel() {
          // TODO Auto-generated method stub

          //別忘記了,要把返回值寫上哦
          return user;
          }
          }

          這樣一個ModelDriven就實現完畢了

          和屬性驅動的Action有很大的區別,下面一一列舉:

          (1)模型驅動的Action必須實現ModelDriven接口,而且要提供相應的泛型,這里當然就是具體使用的Java Bean了。

          (2)實現ModelDriven的getModel方法,其實就是簡單的返回泛型的一個對象。

          (3)在Action提供一個泛型的私有對象,這里就是定義一個User的user對象,并提供相應的getter與setter。

          好了,上面的三件事做完之后,Action就會去自動調用User的setter將表單中的name屬性的值賦給User中的屬性。而Action的后續處理的Jsp頁面后者是Servlet就可以使用user對象了。

          到底是用屬性驅動和是模型驅動呢?

          這個問題困擾了很多Struts2的初學者,我這里提供一些建議:

          (1)請你統一整個系統中的Action使用的驅動模型,即要么都是用屬性驅動,要么都是用模型驅動。

          (2)如果你的DB中的持久層的對象與表單中的屬性都是一一對應的話,那么就使用模型驅動吧,畢竟看起來代碼要整潔得多。

          (3)如果表單的屬性不是一一對應的話,那么就應該使用屬性驅動,否則,你的系統就必須提供兩個Bean,一個對應表單提交的數據,另一個用與持久層。

          posted on 2011-03-21 11:45 如果你是我的傳說 閱讀(2507) 評論(1)  編輯  收藏 所屬分類: struts2


          FeedBack:
          # re: struts2之
          2011-11-05 21:09 | yfuj
          ugigi  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿

          文章分類

          文章檔案

          收藏夾

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 日照市| 云龙县| 绥江县| 涞水县| 乐都县| 宁强县| 盘山县| 白沙| 阜南县| 平南县| 泸西县| 道真| 绩溪县| 淅川县| 荆州市| 宜丰县| 孝昌县| 东辽县| 赣榆县| 沧源| 陆川县| 青阳县| 吴忠市| 桑日县| 莒南县| 锡林郭勒盟| 宁陵县| 兴安盟| 息烽县| 铜山县| 揭西县| 锡林郭勒盟| 台山市| 确山县| 新源县| 登封市| 惠来县| 万山特区| 尖扎县| 阜南县| 常州市|