1. 模型驱动
示例:
注册表单reg.jsp
用户显示list页面 userList.jsp
处理action,模型驱动需要实现ModelDriven 接口,实现Preparable 接口,在modelDriven拦截器之前先运行 prepare拦截器。
package cn.itcast.struts2.modeldriven; import java.util.ArrayList; import java.util.List; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.validation.SkipValidation; import cn.itcast.struts2.model.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; /** * MdAction:某型驱动 */ public class MdAction extends ActionSupport implements ModelDriven<User>,Preparable { private static final long serialVersionUID = -6933309304624396640L; private String name; private Integer uid ; private User user = new User(); private List<User> userList ; public String reg() { return "success"; } @SkipValidation public String toRegView() { System.out.println("toRegView"); return "regView"; } /** * 查询所有用户 */ public String findAllUsers(){ userList = new ArrayList<User>(); User u = null ; for(int i= 0 ; i < 10 ; i ++){ u = new User(); u.setId(1 + i); u.setName("tom" + i); u.setAge(20 + i); userList.add(u); } return "userListView"; } public String edit(){ return "editView" ; } // public User getModel() { return user; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } /** * 该方法在getModel之前运行,在modelDriven拦截器之前先运行 */ public void prepareDoEdit() throws Exception { // User u = new User(); u.setId(uid); u.setName("jerry"); u.setAge(30); user = u ; } public void prepare() throws Exception { } }struts配置文件md.xml, 需要添加paramsPrepareParamsStack, 在prepare之前填充参数。