Action中的变量名作为表单元素的name属性值即可。
二、属性驱动和模型驱动有什么异同?
1.属性驱动
对于属性驱动,我们需要在Action中定义与表单元素对应的所有的属性,因而在Action中会出现很多的
getter和setter方法
2.模型驱动
对于模型驱动,使用的Action对象需要实现ModelDriven接口并给定所需要的类型.而在Action中我们只需
要定义一个封装所有数据信息的javabean
3.属性和模型驱动的相同点
当我们使用属性驱动和模型驱动的时候,必须将表单的元素中的name属性值与我们定义接收数据信息的变量
名对应起来。
三、属性驱动例子
如下面的代码所示,我们将表单中的字段都定义在Action中,这就是属性驱动
package cn.yubo.action; import java.util.Date; import cn.yubo.utils.TextUtils; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private String username; private String password; private String password2; private int age; private Date birthday; private Date graduate; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPassword2() { return password2; } public void setPassword2(String password2) { this.password2 = password2; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getGraduate() { return graduate; } public void setGraduate(Date graduate) { this.graduate = graduate; } public String execute() throws Exception{ return SUCCESS; } @Override public void validate() { super.validate(); System.out.println("validate invoked"); if(TextUtils.isEmpty(username)){ addActionError("username invalidate"); } } }模型驱动则将表单中的数据封装成javabean,并且Action类实现了ModelDriven接口,如下面的代码所示:
package com.example.action; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class RegisterAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); public User getUser() { return user; } public void setUser(User user) { System.out.println("set user : " + user.toString()); this.user = user; } public String execute() throws Exception { System.out.println("call method execute"); return SUCCESS; } @Override public User getModel() { return user; } }这里需要注意的是,Action中定义的成员变量user需要实例化,并且getModel()方法必须返回该user对象