lizongbo 的 编程学习

http://618119.com

BlogJava 首页 新随笔 联系 聚合 管理
  23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks

在一篇blog里我在回复里写了displaytag1.1大数据量分页显示的索引存在bug
 http://www.blogjava.net/zJun/archive/2006/02/27/32723.html

后来下载源代码下来找到了修改bug的地方。
并把代码发到 displaytag的jira里了,具体地址在:
http://jira.codehaus.org/browse/DISPL-303
 (有人已经提交这个bug了)


org.displaytag.pagination.SmartListHelper.java
把下面两个方法的代码改写如下:

     public int getFirstIndexForCurrentPage() {
        return (this.currentPage - 1) * this.pageSize;
    }

    /**
     * Returns the index into the master list of the last object that should appear on the current page that the user is
     * viewing.
     * @return int
     */
    protected int getLastIndexForCurrentPage() {
        if (this.partialList) {
            return (getFirstIndexForCurrentPage()) +
                    Math.min(this.pageSize - 1, this.fullList.size() - 1);
        } else {
            return getLastIndexForPage(this.currentPage);
        }
    }


顺便记录 displaytag 1.1 使用Partial Lists大数据量分页的例子:

在近量不改动现有代码的基础上来使用displaytag结合数据库分页.

1.先设置总页数:

<%
   Integer totalNum = new Integer(919);
request.setAttribute("totalNum",totalNum);//设置总记录条数
%>

2.配置displaytag的 两个属性:partialList="true" size="totalNum"
比如:
  <display:table id="testtbid"  name="requestScope.testlist" pagesize="20" partialList="true" size="totalNum">

3.在jsp中获得翻页信息的代码:

<%

下面代码是取得翻页数

//如果没有为table设置 id那么就要写成ParamEncoder(null);
  String rpname = new org.displaytag.util.ParamEncoder("testtbid")
      .encodeParameterName(
          org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
  System.out.println("当前页数:" + rpname + " = " +
                     request.getParameter(rpname));
       //然后根据当前页数去从数据库中取出相应数据。

 

//see: http://displaytag.sourceforge.net/11/displaytag/apidocs/org/displaytag/tags/TableTagParameters.html

%>
表格分页导航条里的分页链接个数默认是8个,可以通过下面的代码来更改
//在<display:table>标签内
    <display:setProperty name="paging.banner.group_size" value="20"/>
//</display:table>

当然也可以通过实现 org.displaytag.pagination.PaginatedList接口来完成这个要求。
更多信息,请参考:
http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html

利用内置el在displaytag里显示checkbox非常简单:

                     <display:column title='select User' >
 <input type="checkbox" name="firstName"  value="{testtbid.name}" />${testtbid.name}
</display:column>

posted on 2006-03-14 21:01 lizongbo 的编程学习 阅读(7332) 评论(6)  编辑  收藏 所属分类: java 积累