首页 > 代码库 > struts 模型驱动

struts 模型驱动

情景: 有一个用来处理用户的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 模型驱动