//基础action:用来存放通用代码的
public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
//声明一个数据模型的引用,子类可见
protected T model;
@Override
public T getModel() {
return model;
}
//目标:使用默认的构造方法来初始化数据模型
public BaseAction() {
//细化目标:拿到具体类型,然后实例化它。
//得到带有泛型的类型,如BaseAction<Userinfo>
Type superclass = this.getClass().getGenericSuperclass();
//转换为参数化类型
ParameterizedType parameterizedType = (ParameterizedType) superclass;
//获取泛型的第一个参数的类型类,如Userinfo
Class<T> modelClass = (Class<T>) parameterizedType.getActualTypeArguments()[0];
//实例化具体的类
try {
model=modelClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
//日志记录器-抽取
protected final Logger LOG = LoggerFactory.getLogger(this.getClass());
}