package com.sinitek.product.action.base;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* Created by user on 2017/4/17.
*/
public class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
protected T model;
/**
* 在构造方法中动态获得实现类型,通过反射创建模型对象
* 当其子类被创建时会调用这个实现方法,从而获得子类的对象类型
*/
public BaseAction(){
ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
Type[] clazz = parameterizedType.getActualTypeArguments();
Class<T> entityClass = (Class<T>) clazz[0];
try {
model = entityClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
@Override
public T getModel() {
return model;
}
}
关于ModelDrive可以看另一篇文章:http://blog.csdn.net/qq_29631069/article/details/70210065