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;
}

时间: 2024-08-03 07:45:12

018 区域分页查询 - bos的相关文章

024 定区分页查询 - bos

1.修改请求定区数据的URL url : "decidedzoneAction_pageQuery.action", 2.修改Decidedzone.hbm.xml,立即加载关联的Staff <many-to-one name="staff" class="com.hao.bos.entity.Staff" fetch="select" lazy="false"> <column name

014 取派员分页查询 - bos

一.页面调整 1.修改staff.jsp中的表格的获取datagrid数据的url为staffAction_pageQuery.action 二.封装PageBean工具类 public class PageBean<T> { private int currentPage; private int pageSize; private DetachedCriteria detachedCriteria; private int total; private List<T> rows

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

类似toString的问题 将Region转换成json时,由于json中有Subarea且有数据,因此会把Subarea转化为json而Subarea中又含有Region,转化时又会把Region转化为json,如此造成了无限的互相调用 解决办法一: 解决办法很简单,将Region中的subareas属性添加到排除域,不转化这一属性即可 解决办法二: 但是如果要使用分区信息,变不能排除subareas的转化,此时就需要关闭Hibernate的延迟加载,要立即加载分区信息

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

框架 day49 BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)

BOS项目笔记第3天 1.    修复window控件bug 把弹出窗口拖动到浏览器窗口外之后无法再拖动     将提供的outOfBounds.js文件复制到项目中     在需要修复的jsp页面引入js文件,可以阻止控件拖出窗口 <script src="${pageContext.request.contextPath }/js/easyui/outOfBounds.js" type="text/javascript"></script&

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

BOS项目笔记 第5天 今天内容安排: 1.添加定区功能 2.定区分页查询 3.hessian入门----远程调用技术 4.基于hessian实现定区关联客户 1. 添加定区 定区可以将取派员.分区.客户信息关联到一起. 页面:WEB-INF/pages/base/decidedzone.jsp 第一步:使用下拉框展示取派员数据,修改combobox的URL地址,发送请求 第二步:在StaffAction中提供listajax方法,查询没有作废的取派员,返回json数据 第三步:在StaffSe

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

1 学习计划 1.datagrid使用方法(重要) n 将静态HTML渲染为datagrid样式 n 发送ajax请求获取json数据创建datagrid n 使用easyUI提供的API创建datagrid(掌握) 2.实现取派员分页查询 n 调整页面基于datagrid发送ajax请求 n 创建PageBean封装分页参数 n 定义通用分页查询方法 n 将分页查询结果转为json返回 3.取派员批量删除 n 页面调整 n 服务端实现 4.取派员修改 n 页面调整 n 服务端实现 2 data

材料管理框架:一个共通的viewModel搞定所有的分页查询

前言 大家看标题就明白了我想写什么了,在做企业信息化系统中可能大家写的最多的一种页面就是查询页面了.其实每个查询页面,除了条件不太一样,数据不太一样,其它的其实都差不多.所以我就想提取一些共通的东西出来,再写查询时只要引入我共通的东西,再加上极少的代码就能完成.我个人比较崇尚代码简洁干净,有不合理的地方欢迎大家指出. 这篇文章主要介绍两个重点:1.前台viewModel的实现.2.后台服务端如何简洁的处理查询请求. 需求分析 查询页面要有哪些功能呢 1.有条件部输入查询条件(这个不打算做成共通的