关于displaytag1.1的两种分页

原创 2006年06月01日 14:50:00

最近因为项目需要,所以想把原来使用的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);

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

<display:table name="${pageList}" id="list" requestURI="">

     <display:column property="id"/>

</display:table>

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

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

5-31 笛卡尔树 (25分)

5-31 笛卡尔树   (25分) 笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次...
  • qq_26437925
  • qq_26437925
  • 2015年10月31日 07:53
  • 1403

Hive 之表的种类以及相关操作

关于Hive 的表的介绍以及一些表的操作的总结,最后再一次回顾Hive在生态圈里所处的位置...
  • andrewgb
  • andrewgb
  • 2015年08月08日 16:58
  • 1985

jsp中两种跳转方式及区别

1,response跳转:   // 带session,不带request的跳转(客户端跳转)   responst.sendRedirect("目的页面.jsp");   2,forward跳...
  • hbbonson
  • hbbonson
  • 2013年07月20日 11:46
  • 1122

DisplayTag外部(External paging)分页如何导出全部数据?????

转了几篇文章。书名号里面的是我自己加上去的。   DisplayTag外部(External)分页如何导出全部数据 2010-06-25 11:13 http://wallim...
  • pianistOfSoftware
  • pianistOfSoftware
  • 2016年07月13日 11:37
  • 558

Struts2结合DisplayTag、DbUtils实现查询分页、导出Excel

实例:Struts2结合DisplayTag、DbUtils实现查询分页、导出Excel(转)     这几天在看书的时候,发现了一个好东西,一个开源的jsp自定义标签库,可以实现分页显示,导出为e...
  • yuj9006
  • yuj9006
  • 2013年12月06日 16:47
  • 591

用displaytag组件实现分页详解

将你的验证码输入框的previousValue的old值置为空,那么提交时,就会进行验证了。 用displaytag组件实现分页详解  在看刘伟教员的博客项目视频的时辰,看到在项目顶用到了di...
  • qq435967718
  • qq435967718
  • 2012年10月31日 15:37
  • 2070

在Struts中使用displaytag标签的排序/分页数据

显示Struts的标签库是一个开放源码套件的定制标记,提供高层次的网络呈现方式,将工作在一个MVC模型。该库提供了一个重要的功能,同时还易于使用。displaytag标签可以处理列显示,排序,分页,裁...
  • newcnzz
  • newcnzz
  • 2012年10月25日 06:58
  • 888

struts2使用 displaytag 分页异常的处理

displaytag翻页 异常ognl.InappropriateExpressionException: Inappropriate OGNL expression: (d - 443618) - ...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2012年02月20日 15:52
  • 403

displaytag按需分页的包装及实例

displaytag1.1之后支持按需进行分页查询,在其官方网站有如下描述: Displaytag 1.1 offers two alternative ways for working wit...
  • whyonly
  • whyonly
  • 2012年12月28日 08:35
  • 1240

displaytag分页中文处理

displaytag参考: http://blog.sina.com.cn/s/blog_6b184a840100lavn.html http://www.knowsky.com/1045905....
  • lovelovelovelovelo
  • lovelovelovelovelo
  • 2017年05月18日 10:20
  • 338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于displaytag1.1的两种分页
举报原因:
原因补充:

(最多只允许输入30个字)