Struts2之ModelDriven的使用

來源:互聯網
上載者:User

Java代碼 
我們可以根據Action屬性的不同將它分為兩類:Field-Driven(屬性驅動)Action和Model-Driven(模型驅動)Action。 

一、Field-Driven(屬性驅動)Action,Action擁有自己的屬性,這些屬性一般是Java的基本類型。表單欄位直接和Action的屬性對應。 
二、實現了modelDriven介面可以在action中直接獲得例如User對象,它會將ObjectgetModel()取得的User放到ValueStack中。可以理解為將這個User的屬性追加到Action中。它主要是作用是實作類別似Struts的FormBean功能。 

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

ModelDriven介面只有一個方法 

public  Object  getModel(){ 
returnnull; 
} 

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

 1 //ModelDriven要使用泛型哦  2  3 public class LoginAction extends ActionSupport implements ModelDriven<User>{  4  5 private static final long serialVersionUID=-6434128483294080524L;  6  7 //這裡必須要new  8 private User user=new User();  9 public String login() throws Exception{ 10 //TODOAuto-generatedmethodstub 11 return SUCCESS; 12 } 13 14 //這裡是實現介面方法 15 16 @Override17 public User getModel(){ 18 //TODOAuto-generatedmethodstub 19 20 //別忘記了,要把傳回值寫上哦 21 return user; 22 } 23 } 

這樣一個ModelDriven就實現完畢了 

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

(1)模型驅動的Action必須實現ModelDriven介面,而且要提供相應的泛型,這裡當然就是具體使用的JavaBean了。 

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

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

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

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

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.