Struts2 Preparable与ModelDriven 接口

一、Preparable接口

该接口有一个prepare()方法,实现该接口的action在执行时首先执行该方法,prepare()方法的执行点是在:setXxx()和execute()的执行之前,如创建prepareAdd方法,则在执行add方法前,将先执行prepareAdd方法 。

 

二、ModelDriven接口

ModelDriven接口的作用是实现模型驱动而不需要在表单中使用如user.username的方式,只需写username即可,必须实现该接口getModel方法。

 

defaultStack无法接收prepare()需要的数据,需配置paramsPrepareParamsStack拦截器栈。使用prepare拦截器之前,应先调用params拦截器,prepare() 才能接收到表单数据,调用的顺序为:params --> prepare --> modelDriven --> params。

 

Preparable、ModelDriven接口结合使用:

 

 

private User user;
private Long id;
private UserService userService;
 
public void setId(Long id) {
    this.id = id;
}

public void prepare() throws Exception {
    if(id != null) {
       user = new User();
    } else {
       user = userService.getById(id);
    }
}

public Object getModel() {
    return user;
}

 

 

你可能感兴趣的:(java,struts2,modelDriven,Preparable)