struts 模型驅動

情景: 有一個用來處理用戶的UserAction 類, 該動做類實現了 ModelDriven 接口. 當用戶觸發UserAction 動做時, ModelDriven 攔截器將調用相關UserAction 對象的 getModel() 方法, 並把返回的模型(User實例)壓入到 ValueStack 棧. 接下來 Parameters 攔截器將把表單字段映射到 ValueStack 棧的棧頂對象的各個屬性中. 由於此時 ValueStack 棧的棧頂元素是剛被壓入的模型對象, 因此該模型將被填充. 若是某個字段在模型裏沒有匹配的屬性, Param 攔截器將嘗試 ValueStack 棧中的下一個對象.前端

一個模型類必須有一個不帶任何參數的構造器.java

寫法 例子:this

前端代碼spa

1 <form action="${pageContext.request.contextPath }/user_add" name="form_">
2         用戶名:<input type="text" name="user.userName" />  <br>
3             密碼:<input type="text" name="user.pwd" /><br/>
4             <input type="submit" value="提交">
5     </form>

後臺代碼code

 1 //----------------user----------實體類------------------
 2 package test.a_usertest;
 3 public class User {
 4     private String userName;
 5     private String pwd;
 6     public String getUserName() {
 7         return userName;
 8     }
 9     public void setUserName(String userName) {
10         this.userName = userName;
11     }
12     public String getPwd() {
13         return pwd;
14     }
15     public void setPwd(String pwd) {
16         this.pwd = pwd;
17     }
18 }
19 //--------action---------------------------------
20 package test.a_usertest;
21 
22 import java.util.ArrayList;
23 import java.util.List;
24 
25 import com.opensymphony.xwork2.ActionSupport;
26 import com.opensymphony.xwork2.ModelDriven;
27 
28 public class UserAction extends ActionSupport implements ModelDriven<User>{
29 
30     private User user = new User();
31     public User getUser() {
32         return user;
33     }
34     public void setUser(User user) {
35         this.user = user;
36     }
37     public User getModel() {
38         return this.user;
39     }
40     public String add(){
41         List<Object> list = new ArrayList<Object>();
42         list.add(user);//打個斷點在這裏能夠發現,此時user.userName 、user.pwd的值爲前端傳過來的值,也就是頁面中的this.user對象自動被封裝了
43         return SUCCESS;
44     }
45 }
相關文章
相關標籤/搜索