模板模式抽取Struts2模型驱动及分页重复代码,简化开发

本文介绍了一个抽象基类BaseAction的设计与实现,该基类用于简化Struts2框架中的ModelDriven模式应用。通过泛型参数化的方式,在构造函数中实现了模型对象(model)的实例化。此外,还提供了分页查询的通用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public abstract class BaseAction<T> extends ActionSupport implements
ModelDriven<T> {


// 模型驱动
protected T model;


@Override
public T getModel() {
return model;
}


// 构造器 完成model实例化
public BaseAction() {
// 构造子类Action对象 ,获取继承父类型的泛型
// XXXAction extends BaseAction<XXX>
// BaseAction<XXX>
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();
//此处可以写入错误日志,并打印到控制台
}
}

//分页代码提取
// 接收分页查询参数
protected int page;
protected int rows;


public void setPage(int page) {
this.page = page;
}


public void setRows(int rows) {
this.rows = rows;
}


// 将分页查询结果数据,压入值栈的方法
protected void pushPageDataToValueStack(Page<T> pageData) {
Map<String, Object> result = new HashMap<String, Object>();
result.put("total", pageData.getTotalElements());
result.put("rows", pageData.getContent());


ActionContext.getContext().getValueStack().push(result);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值