| 在一篇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>

lizongbo 的编程学习 2006-03-14 21:01
|