Displaytag1.1支持在外部实现大数据量分页

转载 2007年10月08日 22:12:00
Displaytag1.1支持在外部实现大数据量分页。主要有两种方式实现:

Displaytag 1.1 offers two alternative ways for working with partial lists:

  • the first one uses the valuelist pattern, and requires that the object that you give to displaytag implements the org.displaytag.pagination.PaginatedList interface. You can pass this object to displaytag as an usual list, and it will extract paging and sorting information from it. This way is more recommended if you have to build your backend layer and you can easily follow this pattern.
  • a second way, recommended if you only have to use partial list for few tables that show a performance problem using full lists, is passing all the needed parameters as separate tag attributes (recors to be shown, page number, total number of records...)

其中第二种方式看起来较为简单,只需在<displaytag>中增加两个属性:partialList="true"size="resultSize"即可,但是在使用发现这种方式由于是在原来内存分页的基础上修改的,所以还是存在一些Bug(比如:分页导航的值不会变......)

所以这里介绍Displaytag推荐的第一种方式,即:
实现org.displaytag.pagination.PaginatedListorg.displaytag.pagination.PaginatedList接口。

实现PaginatedList接口:

import  java.util.List;

import
 org.displaytag.pagination.PaginatedList;
import
 org.displaytag.properties.SortOrderEnum;

/**
 * 分页列表
 * 
 * 
@author  John.Zhu
 * 
 
*/

public   class  PageList  implements  PaginatedList  {
    
/**
     * 每页的列表
     
*/

    
private  List list;

    
/**
     * 当前页码
     
*/

    
private   int  pageNumber  =   1 ;

    
/**
     * 每页记录数 page size
     
*/

    
private   int  objectsPerPage  =   15 ;

    
/**
     * 总记录数
     
*/

    
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;
    }


}

Contoller:
/**
     * 分页查询
     * 
     * 
@param  request
     * 
@param
 response
     * 
@return

     * 
@throws  Exception
     
*/

    
private  ModelAndView paging(HttpServletRequest request,
            HttpServletResponse response, ModelAndView mav) 
throws  Exception 
{
        
//  获取当前页数,displaytag通过参数"page"传递这个值

                 int  pageNumber;
        
if  (request.getParameter( " page " !=   null

                
&&   ! "" .equals(request.getParameter( " page " )))  {
            pageNumber 
=  Integer.parseInt(request.getParameter( " page "
));
        }
  else   {
            pageNumber 
=   1
;
        }

        PageList pageList 
=   new  PageList();
        Map map 
=  WebUtils.getParametersStartingWith(request,  " search_ "
);
        Page page 
=
 dao.query(map, pageNumber, PAGE_SIZE);
                
//  设置当前页数

        pageList.setPageNumber(pageNumber);
                
//  设置当前页列表

        pageList.setList(page.getResults());
                
//  设置page size

        pageList.setObjectsPerPage(PAGE_SIZE);
                
//  设置总页数

        pageList.setFullListSize(page.getTotalCount());

        mav.addObject(
" results "
, pageList);

        
return
 mav;
    }

好了,现在直接在JSP上使用 displaytag就行了:
< display:table  name ="${results}"  id ="row"  class ="simple nocol"  pagesize ="${pageSize}"  export ="true"  
                    decorator
="org.displaytag.decorator.TotalTableDecorator"
 
                    requestURI
="${pageContext.request.contextPath}/pageQuery.do?method=paging" >

                 
< display:column  property ="date.time"  title ="日期"  format ="{0,date,yyyy-MM-dd}"  sortable ="false"   />
                
< display:column  property ="code"  title ="编码"  group ="1"  sortable ="false"   />
                
< display:column  property ="name"  title ="名称"  group ="1"  sortable ="false"   />
                 
< display:column  property ="costTotal"  title ="总额(元)"  format ="{0,number,0,000}"  total ="true"  sortable ="false"   />

</ display:table >
 

ZtreeMasterFile(zTree大数据量一次性加载)

树集合篇: 第一篇:ZtreeMasterFile(zTree大数据量一次性加载): TODO: 关于后台数据存储将集中在最后一篇讲解,此处省略 ...
  • HR1187362408
  • HR1187362408
  • 2015年06月08日 14:49
  • 1976

Linux编程实现一个简单的Shell

在linux中实现一个简单的命令解释程序,功能要求: 1)同时支持内部命令和外部命令,内部命令支持两个(cd、exit) 2)支持后台命令 首先解释一下上面的两个要求,实际上是三种情况: 1.如果是...
  • whoami021
  • whoami021
  • 2013年12月22日 21:31
  • 2096

关于支持向量机(SVM)的一个简单应用实例及matlab代码

******************************************************** ***数据集下载地址 :http://pan.baidu.com/s/1geb8...
  • mushiheng
  • mushiheng
  • 2016年09月09日 22:55
  • 8171

详细讲解MySQL大数据量分页SQL语句优化

  • 2014年07月10日 15:27
  • 57KB
  • 下载

Jax的大数据量分页

  • 2007年09月11日 11:02
  • 4KB
  • 下载

大数据量分页

  • 2007年09月11日 10:47
  • 4KB
  • 下载

ACCESS数据库大数据量分页的几种方法比较及测试结果分析

  • 2010年07月25日 10:55
  • 88KB
  • 下载

asp.net2.0 大数据量分页

  • 2008年08月28日 14:31
  • 1.03MB
  • 下载

在ASP.NET 2.0中操作数据:大数据量时提高分页的效率

  • 2009年01月21日 10:20
  • 1.76MB
  • 下载

Datatables结合struts2+spring+mybatis实现服务器分页,解决大数据量加载缓慢

在项目中用到datatables比较多,但是当datatables加载超过1000多的时候就会出现有点缓慢的的样子,这个时候如果继续增加数据量让datatables去处理,那会是一个让人抓狂的事情,幸...
  • keithssy
  • keithssy
  • 2012年09月21日 14:36
  • 1938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Displaytag1.1支持在外部实现大数据量分页
举报原因:
原因补充:

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