public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
//模型驱动
protected T model;
@Override
public T getModel() {
return model;
}
// easyui分页参数
protected int page;
protected int rows;
public void setPage(int page) {
this.page = page;
}
public void setRows(int rows) {
this.rows = rows;
}
//构造器完成model实例化
public BaseAction(){
// 构造子类Action对象,获取继承父类型的泛型
// 例如:AreaAction extends BaseAction<Area>
// getGenericSuperclass()获取带有泛型的父类class
Type genericSuperclass = this.getClass().getGenericSuperclass();
// 获取类型的第一个泛型
ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
Class<T> modelClass = (Class<T>) parameterizedType.getActualTypeArguments()[0];
try {
model = modelClass.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
System.out.println("模型构造失败!!!");
}
}
// 将分页的查询结果数据压入值栈的方法
protected void pushPageDataToValueStack(Page<T> pageData){
//根据查询结果,封装datagrid需要的数据格式
Map<String,Object> result = new HashMap<>();
result.put("total",pageData.getTotalElements());
result.put("rows",pageData.getContent());
//压入值栈返回
ActionContext.getContext().getValueStack().push(result);
}
}