背景:在利用easyui做分页查询的时候,需要先在pageBean中封装一个离线查询对象,DetachedCriteria,用于封装页面可能传递过来的条件.
在baseAction中进行初始化的时候,设置为null,然后封装到pagebean中,但是在封装的时候写成了下面的形式,没有再赋值给离线查询对象.,所以导致后期在获取的时候获取的是null.
//错误代码(正确的应该写成 detachedCriteria = detachedCriteria.forClass(entityClass); )
detachedCriteria.forClass(entityClass);
pageBean.setDetachedCriteria(detachedCriteria);
public Class<T> entityClass;
DetachedCriteria detachedCriteria = null;
//子类实例化化时会调用父类的无参构造函数
public BaseAction() {
ParameterizedType Superclass = (ParameterizedType) this.getClass().getGenericSuperclass();
Type[] Arguments = Superclass.getActualTypeArguments();
entityClass = (Class<T>) Arguments[0];
//正确的代码
detachedCriteria = detachedCriteria.forClass(entityClass);
pageBean.setDetachedCriteria(detachedCriteria);
try {
model = entityClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
//总条数
DetachedCriteria dc = pageBean.getDetachedCriteria(); //这里开始是获取的时候始终为null,导致程序出错
dc.setProjection(Projections.rowCount());