For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
昆明达内培训的老师给大家分享java的知识点ModelDriven & Preparable接口。
一、Preparable接口
1.有prepare()方法,实现该接口的action在执行时,首先执行该方法,用于进行一些预处理。
2.创建prepareXXX方法,则在执行XXX方法前,将先执行prepareXXX方法.
二、ModelDriven接口
1.该接口实现将T类中的属性展现到action中,action中不再需要针对T类,写set,get方法
2.注意preparable与modeldriven执行顺序,必须保证getmodel在prepare之前调用。
实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类(就是父类抽出来的公共方法中的泛型)。
其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。
三、执行顺序:
prepare->prepareInput->input->getModel.
参照下面例子:
假设请求为:http://127.0.0.1:8080/employee_input.action
且我们的类结构如下:
BaseAction.java
public class BaseAction extends ActionSupport {
}
CRUDAction.java
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
public abstract class CRUDAction<T> extends BaseAction implements ModelDriven<T>, Preparable {
//具体的CRUD方法抽取
CRUD Method;
//保证执行input方法时执行下面规定的prepareInput():因为方法名对应二次参数绑定拦截器
public abstract void prepareInput() throws Exception;
@Override
public void prepare() throws Exception {
//留空
}
}
具体实现EmployeeAction.java
public class EmployeeAction extends CRUDAction<Employee> {
//具体的实现CRUD ,如excute(){};save(){};delete(){};等等
CRUD Method;
public String input() {
}
@Override
public void prepareInput() throws Exception {
//省略其他设置
//设置查询,回显数据,在更新方法中中解决属性丢失问题
}
@Override
/**驱动模型*/
public Employee getModel() {
return employee;
}
//省略其他设置
}
顺序:
1 . CRUDaction-------prepare()
2 . EmployeeAction---prepareInput()
3 . EmployeeAction---input()
4 . EmployeeAction---getModel()
登陆昆明达内IT培训官网了解详情(km.tedu.cn)