018 区域分页查询 - bos

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了018 区域分页查询 - bos相关的知识,希望对你有一定的参考价值。


一、页面修改

1.更改获取分页数据的url

// 收派标准数据表格
$(‘#grid‘).datagrid( {
iconCls : ‘icon-forward‘,
fit : true,
border : false,
rownumbers : true,
striped : true,
pageList: [30,50,100],
pagination : true,
toolbar : toolbar,
url : "regionAction_pageQuery.action",
idField : ‘id‘,
columns : columns,
onDblClickRow : doDblClickRow
});

二、服务端实现

1.实现RegionAction.pageQuery

/**
* 分页查询取派员
* @return
*/
public String pageQuery(){

PageBean<Staff> pageBean = new PageBean<Staff>();
pageBean.setCurrentPage(page);
pageBean.setPageSize(rows);
DetachedCriteria dc = DetachedCriteria.forClass(Staff.class);
pageBean.setDetachedCriteria(dc);

staffService.pageQuery(pageBean);

//将pageBean转为json写到页面中
JsonConfig jsonConfig = new JsonConfig();
//设置排除属性
jsonConfig.setExcludes(new String[]{"currentPage", "detachedCriteria", "pageSize"});
String json = JSONObject.fromObject(pageBean, jsonConfig).toString();
ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
BOSUtils.getWriter().write(json);
return NONE;
}

2.实现RegionService.pageQuery

@Override
public void pageQuery(PageBean<Region> pageBean) {
regionDao.pageQuery(pageBean);
}

三、发现分页查询代码十分相似,可以抽取到BaseAction

1.将PageBean抽取到父类BaseAction中

protected PageBean<T> pageBean = new PageBean<T>();

2.将基于easyui分页的两个属性驱动变量page和rows的set方法抽取到BaseAction中,省略变量声明,并在set方法中直接设置到PageBean中

//注入分页相关属性
public void setRows(int rows) {
pageBean.setPageSize(rows);
}

public void setPage(int page) {
pageBean.setPageSize(page);
}

3.在构造方法中获取到泛型时构造DetachedCriteria变量,并设置到PageBean中

//BaseAction的构造方法中
DetachedCriteria dc = DetachedCriteria.forClass(entityClass);
pageBean.setDetachedCriteria(dc);

4.最后在父类中抽象一个对象转换json的方法,并写到响应中

/**
* 将对象转化为json并写到响应
* @param o 对象
* @param exclueds 排除的对象属性
*/
protected void object2JsonAndWriteToResponse(Object o, String[] exclueds){
//将pageBean转为json写到页面中
JsonConfig jsonConfig = new JsonConfig();
//设置排除属性
jsonConfig.setExcludes(exclueds);
String json = JSONObject.fromObject(pageBean, jsonConfig).toString();
ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
BOSUtils.getWriter().write(json);
}

5.子类要实现分页时,只需直接调用Service的分页方法,然后再调用父类抽取的json转化方法把PageBean传递进去即可

/**
* 分页查询
* @return
*/
public String pageQuery(){
regionService.pageQuery(pageBean);
object2JsonAndWriteToResponse(pageBean, new String[]{"currentPage", "detachedCriteria", "pageSize"});
return NONE;
}

以上是关于018 区域分页查询 - bos的主要内容,如果未能解决你的问题,请参考以下文章

020 解决区域分页查询死循环问题 - bos

014 取派员分页查询 - bos

JAVAEE——BOS物流项目04:学习计划datagrid分页查询批量删除修改功能

JAVAEE——BOS物流项目05:OCUploadPOIpinyin4J重构分页代码分区添加combobox

JAVAEE——BOS物流项目06:分页查询分区导出Excel文件定区添加分页问题总结

bos 第5天(定区的添加定区的分页查询hessian远程调用实现获取客户信息)