標籤:package username 處理 ring input context work com 使用者名稱
情景: 有一個用來處理使用者的UserAction 類, 該動作類實現了 ModelDriven 介面. 當使用者觸發UserAction 動作時, ModelDriven 攔截器將調用相關UserAction 對象的 getModel() 方法, 並把返回的模型(User執行個體)壓入到 ValueStack 棧. 接下來 Parameters 攔截器將把表單欄位對應到 ValueStack 棧的棧頂對象的各個屬性中. 因為此時 ValueStack 棧的棧頂元素是剛被壓入的模型對象, 所以該模型將被填充. 如果某個欄位在模型裡沒有匹配的屬性, Param 攔截器將嘗試 ValueStack 棧中的下一個對象.
一個模型類必須有一個不帶任何參數的構造器.
寫法 例子:
前端代碼
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>
後台代碼
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 }
struts 模型驅動