文章出处:http://blog.csdn.net/shrek_xu/archive/2006/06/01/767885.aspx

最近因为项目需要,所以想把原来使用的displaytag1.0升级为displaytag1.1,其实升级的原因很简单,1.0实在是太傻了,每次分页还需要将所有数据一次载入,效率低到无法忍受:)

1.1版最大的改进可以说是终于支持了大家期待以久的分次加载功能了,想显示多少数据就载入多少数据.1.1版本支持两种方式的分页,第一种是实现其org.displaytag.pagination.PaginatedList 接口,第二种是在页面和后台同时做修改来实现分页功能.在网上关于第二种分页的使用方法介绍的非常多,而且官方文档上面写的也比较详细,所以在这里我主要介绍自己是如何使用第一种方式进行分页的,且这种方式也是官方推荐分页方式(自己摸索的,呵呵,不好不要见怪)

首先写一个此接口的实现类

/**

* PaginatedListImpl

* User: shrek_xu

* Date: 2006-5-30

* Time: 20:35:18

*

* totalNum 所有条目数目

* currentPage 当前所在页号

* objectsPerPage 每页显示条数

* list 此页所需要显示的数据

*/

public class PaginatedListHelper implements PaginatedList{

private List list;

private int pageNumber = 1;

private int objectsPerPage = 20;

private int fullListSize = 0;

private String sortCriterion;

private SortOrderEnum sortDirection;

private String searchId;

public List getList() {

return list;

}

public void setList(List list) {

this.list = list;

}

public int getPageNumber() {

return pageNumber;

}

public void setPageNumber(int pageNumber) {

this.pageNumber = pageNumber;

}

public int getObjectsPerPage() {

return objectsPerPage;

}

public void setObjectsPerPage(int objectsPerPage) {

this.objectsPerPage = objectsPerPage;

}

public int getFullListSize() {

return fullListSize;

}

public void setFullListSize(int fullListSize) {

this.fullListSize = fullListSize;

}

public String getSortCriterion() {

return sortCriterion;

}

public void setSortCriterion(String sortCriterion) {

this.sortCriterion = sortCriterion;

}

public SortOrderEnum getSortDirection() {

return sortDirection;

}

public void setSortDirection(SortOrderEnum sortDirection) {

this.sortDirection = sortDirection;

}

public String getSearchId() {

return searchId;

}

public void setSearchId(String searchId) {

this.searchId = searchId;

}

}

然后在使用的时候只需要创建此类的一个实例,且将所需要的参数通过set方法赋值进去就可以了

int page;

/*

*其中request中的page参数为displaytag中的默认当前页数,当然也可以使用*TableTagParameters.SORT_AMOUNT_PAGE来表示当前页数

*/

if(request.getParameter("page")!=null && !"".equals(request.getParameter("page"))){

page=Integer.parseInt(request.getParameter("page"));

}else{

page=1;

}

PaginatedList paginaredList=new PaginatedListHelper();

paginaredList.setPageNumber(page);

// 此页要显示的list数据

List list=.......;

paginaredList.setList(list);

// 总共有多少数据,他会根据所有数目和每页数目自动统计页数

paginaredList.setFullListSize(...);

// 如果你只设定这几个参数,那么其余的参数将会默认为你实现类中所赋的初值

最后,你还需要将这个实例放入到request或session中去,好让displaytag知道这个是外部分页

request.setAttribute("pageList",paginaredList);

在前台只需象下面这样写就可以了

最开始我对每次都要传入总共有多少条数据表示疑问,认为这个没有必要,只需要第一次传入就可以了,但是后来仔细想想,因为整个分页过程是动态的,所以,很有可能在你翻页的同时,原来的数据已经发生了变化,所以每次传入总数目是很有必要的

如果大家需要转载,请你也附上此文连接

posted on 2007-11-14 19:55 Ke 阅读(358) 评论(0)  编辑  收藏 所属分类: tag

java中display1_关于displaytag1.1的两种分页相关推荐

  1. Java中BorderLayout布局管理器的两种排列实现方式

    java中Frame类默认的布局管理器为BorderLayout,其主要是将Frame窗口分为东西南北中五个区域,每个区域仅限于放一个组件,如加入多个,前免得会被覆盖,解决方法为:可以在一个区域中加入 ...

  2. Java中对List集合排序的两种方法

    第一种方法,就是list中对象实现Comparable接口,代码如下: public class Person implements Comparable<Person> {private ...

  3. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  4. java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...

    [填空题]已知函数 ,则微分 . [填空题]. [单选题]71.用转动小滑板法车圆锥时产生( )误差的原因是小滑板转动角度计算错误. [单选题] [填空题]Java中的方法的多态性有两种形式:( )和 ...

  5. java数组循环扩容_Java中实现数组动态扩容的两种方法

    Java中实现数组动态扩容的两种方法 java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量. 我们可以 ...

  6. Java中double类型输出小数点后两位

    Java中double类型输出小数点后两位 思路 就是在输出的时候使用字符串格式即可. double testNum=1.123456789;System.out.println(String.for ...

  7. JAVA中线程同步的方法(7种)汇总

    JAVA中线程同步的方法(7种)汇总 同步的方法: 一.同步方法 即有synchronized关键字修饰的方法. 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法. ...

  8. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲 ...

  9. java中为final变量赋值的几种方式

    java中为final变量赋值的几种方式 前言 使用final修饰变量,很多人第一时间想到的就是不可变.然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修 ...

  10. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

最新文章

  1. LoadRunner 常见错误收集及解决方案
  2. php获得帮助类数据_PHP解析xml格式数据工具类示例
  3. Python date,datetime,time等相关操作总结
  4. Android PC投屏简单尝试—最终章1
  5. GDCM:gdcm::PixelFormat的测试程序
  6. 创建自定义地理(坐标)变换
  7. 深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建
  8. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...
  9. c语言函数怎么返回,C语言函数的返回值应该怎么返回
  10. Bom及Bom对象的详细介绍
  11. Win10任务栏100%透明怎么设置
  12. 原来把300页Word转成PPT,只需要一个键!别再复制粘贴了
  13. Cadence Allegro怎么从2层板添加层到4层板
  14. CSS3---移动端苹果安卓适配
  15. web开发常用js及html代码
  16. 计蒜客T1005输出字符三角形
  17. 话费充值接口文档源码(2)
  18. js,前端下载PDF方法总结
  19. 【修复版】仿我爱看电影网站模板/海洋CMS影视系统模板
  20. 大话西游之大圣娶亲中的至尊宝和紫霞仙子

热门文章

  1. 【有手就行】电脑蓝屏恶搞(附带一键复原方法)
  2. 快手sig签名和did egid的注册(操作太快了,请稍微休息一下)
  3. hping 详解_hping3命令
  4. Unity3D内存释放
  5. 对股票进行可视化分析
  6. 华为ensp静态路由配置
  7. 工具方法:java读取Excel合并单元格(简单实例)
  8. RS232线序问题(研旭手把手教你学DSP)
  9. skyline软件体系及工作流程
  10. [开发笔记]-FireWorks常用操作快捷键