displaytag1.1 部分载入分页方式

(1)    displaytag 分页采用两种方式:一种方式是将全部数据一次性读取到内存中,然后分页。这种方式只能试用于数据量小的应用系统。另一种方式是用户对于每次翻页的请求,只将页面上显示的数据读取到内存中,这种方式适用于数据量大的应用系统。
(2)    displaytag1.1 的部分读取数据的实现
  实现 org.displaytag.pagination.PaginatedList 接口,实现 PaginatedList 接口的代码如下,在实现中加入了属性的 setter 方法。
package com.gmail.kissluck.sample;
 
import java.util.ArrayList;
import java.util.List;
 
import org.displaytag.pagination.PaginatedList;
import org.displaytag.properties.SortOrderEnum;
 
public class PaginatedListImpl implements PaginatedList {
 
    List list = new ArrayList();
    int pageNumber = 0;
    int objectsPerPage = 5;
    int fullListSize = 0;
    String sortCriterion;
    SortOrderEnum sortDirection;
    String searchId;
 
    public void setFullListSize(int fullListSize) {
        this.fullListSize = fullListSize;
    }
 
    public void setList(List list) {
        this.list = list;
    }
 
    public void setObjectsPerPage(int objectsPerPage) {
        this.objectsPerPage = objectsPerPage;
    }
 
    public void setPageNumber(int pageNumber) {
        this.pageNumber = pageNumber;
    }
 
    public void setSearchId(String searchId) {
        this.searchId = searchId;
    }
 
    public void setSortCriterion(String sortCriterion) {
        this.sortCriterion = sortCriterion;
    }
 
    public void setSortDirection(SortOrderEnum sortDirection) {
        this.sortDirection = sortDirection;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getList()
     */
    public List getList() {
        return this.list;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getPageNumber()
     */
    public int getPageNumber() {
 
        return this.pageNumber;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getObjectsPerPage()
     */
    public int getObjectsPerPage() {
        return this.objectsPerPage;
    }
 
    /* (non-Javadoc)
     * @see org.displaytag.pagination.PaginatedList#getFullListSize()
     */
    public int getFullListSize() {
 
        return this.fullListSize;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getSortCriterion()
     */
    public String getSortCriterion() {
        return this.sortCriterion;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getSortDirection()
     */
    public SortOrderEnum getSortDirection() {
        return this.sortDirection;
    }
 
    /*
     * @see org.displaytag.pagination.PaginatedList#getSearchId()
     */
    public String getSearchId() {
        return this.searchId;
    }
 
}
  创建 PaginatedList 的实例并设置属性,其中对象集合从后台查询数据库获取,其他分页的参数由用户来设定。
<%@page contentType="text/html; charset=GBK"%>
<%@page import="com.gmail.kisslucksample.dao.*"%>
<%@page import="com.gmail.kissluck.sample.*"%>
<%@page import="com.gmail.kissluck.sample.util.*"%>
<%@page import="org.displaytag.properties.SortOrderEnum"%>
<%@page import="org.displaytag.pagination.PaginatedList"%>
<%@page import="org.apache.commons.lang.*"%>
<%@taglib uri="/WEB-INF/displaytag-11.tld" prefix="display"%>
<%
 String strPage = request.getParameter("page");
 String strDir = request.getParameter("dir");
 String strSort = request.getParameter("sort");
 int intCurrentPage = 1; // 当前页面
 if (null != strPage && !"".equals(strPage.trim())) {
    intCurrentPage = new Integer(strPage).intValue();
 }
 // 创建 PaginatedListImpl 实例
 PaginatedListImpl lstPage = new PaginatedListImpl();
 lstPage.setPageNumber(intCurrentPage); // 设置当前页
 // 设置 sortDirection
 if (!StringUtils.isEmpty(strDir)) {
    if (StringUtils.equalsIgnoreCase(strDir, "asc"))
      lstPage.setSortDirection(SortOrderEnum.ASCENDING);
    else
      lstPage.setSortDirection(SortOrderEnum.DESCENDING);
 }
 // 设置 sortCriterion
 if (!StringUtils.isEmpty(strSort)) {
    lstPage.setSortCriterion(strSort);
 }
 // 读取数据库中的数据
 PagingParam param = new PagingParam();
 param.setSCurrentPage(strPage);
 param.setSDir(strDir);
 param.setSort(strSort);
 param.setSPerPage("7");
 // 读取数据
 PagingDAO pdao = new PagingDAO(param);
   // 从数据库中读取数据并以对象列表的形式返回
 java.util.List list = pdao.getPerList(param);
// 从数据库中读取数据的总数
 int intFullCount = PagingDAO.getFullListCount(param);
 // 设置记录总数
  lstPage.setFullListSize(intFullCount);
 // 设置显示的对象集合
 lstPage.setList(list);
 // 设置每页显示的页数
  lstPage.setObjectsPerPage(7);
   // request 范围内保存对象集合
 request.setAttribute("list", lstPage);
   // request 范围内保存记录的总数
 request.setAttribute("resultSize", intFullCount);
 %>
  displaytag 的显示。 dispalytag name 属性设置为保存在 request 范围内的对象列表的名称。 partialList 设置为 true ,表示分页导航时才加载数据的方式。 media 表示导出数据的方式,如果不希望某列出现在导出的文件类型中,可以通过设置 media 进行过滤,例如不希望 email 列出现在导出的 excel 表格中, media 的设置中就只设置了“ csv xml pdf ”。
<display:table name="list" sort="external" defaultsort="1" pagesize="7" partialList="true" size="resultSize" export="true">
 <display:column property="id" title="id" media="csv excel xml pdf"/>
 <display:column property="name" title="name" media="csv excel xml pdf"/>
 <display:column property="age" title="age" media="csv excel xml pdf"/>
 <display:column property="email" title="email" media="csv xml pdf"/>
</display:table>
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值