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 }
相关文章
相关标签/搜索