使用 DWR 我是这样做简单分页的[自己记录一下]

DWR 本身未提供分页的功能,所以这部分要自己来实现。如果把后台的所有记录都拉到页面用 JS 分页,那是很不现实的。因此,虽说是 DWR 分页,但还得服务端来支持,由服务端的远程方法只返回当前页所显示的记录,DWR 自己要明确当前是第几页,是否有上一页、下一页。


还是用代码来说明吧,分解为三部分代码:

1. 暴露给 DWR 调用的 Java 的远程方法
2. JS 的 DWR 调用
3. 显示分页导航栏

DWR 要调用的 Java 方法:
 1/**
 2 * 根据预定的条件查询记录 conditions 为查询条件  pageNo 页码,从 1 开始, pageSize 每页的记录数
 3 */
 4public Map getPageByxtents(Map conditions, int pageNo, int pageSize)    throws Exception {
 5
 6    //获得总记录数
 7    Integer recordCount = (Integer) (getSqlMapClient().queryForObject("getCountByExtents", conditions));
 8
 9    // 总页数
10    int pageCount = (int) Math.ceil(recordCount.doubleValue() / pageSize);
11
12    // pageNO 超界则取接近的边界值
13    pageNo = (pageNo &gt; pageCount) ? pageCount : (pageNo < 1 ? 1 : pageNo);
14
15    int skip = (pageNo - 1) * pageSize;
16
17    //这里用的是 iBatis 返回当前页的数据,其他如 JDBC、Hibernate 持久化方化作相应变化
18    List data = getSqlMapClient().queryForList("getByExtents",conditions, skip, pageSize);
19
20    Map resultMap = new HashMap();
21    resultMap.put("data", data);
22    resultMap.put("recordCount", recordCount);
23
24    //要清楚 JS 得到的数据的结构
25    return resultMap;
26}

JS 的 DWR 调用代码:
 1//分页获取查询到的记录
 2function search(pageNo){
 3    var conditions = {magic:'Unmi',start:100};
 4    var pageSize = $('pageSize').value;
 5
 6    //调用前面代码的 getPageByExtends 方法
 7    YouDwrRemoteObject.getPageByExtents(conditions,pageNo,pageSize,{
 8        callback:function(data){
 9            DWRUtil.removeAllRows("listTable"); //移除页面表格中的记录
10            addTableRows(data.data); //把返回的数据添加到表格中,
11            showPageBar(data,pageNo);//调用显示页面导航的函数
12        },
13        errorHandler:function(msg,ex){
14            alert('查询记录错误!')
15        }
16    });
17}

 显示分页导航栏
 1//显示页码导航
 2function showPageBar(data,pageNo){
 3
 4    var pageCount = Math.ceil(data.recordCount/$('pageSize').value); //总页数
 5    var pageStr = "共 " + data.recordCount +" 条记录 第 "+ pageNo+"/"+pageCount + " 页 ";
 6    if(pageNo > 1) {
 7        pageStr += "<a href='javascript:search(1)'>首 页</a> <a href='javascript:search("+(pageNo-1)+")'>上一页</a> ";
 8    }
 9    if(pageNo < pageCount){
10        pageStr += "<a href='javascript:search("+(pageNo+1)+")'>下一页</a> <a href='javascript:search("+pageCount+")'>末 页</a> ";
11    }
12
13    pageStr += "&amp;nbsp;";
14    $('pageDiv').innerHTML= pageStr; //"共 115 条记录 第 2/12 页 首 页 上一页 下一页 末 页";
15}

显示的页码导航效果是:

共 115 条记录  第 3/12 页 首 页  上一页  下一页  末 页 永久链接 https://yanbin.blog/dwr-simple-pagination/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。