当前位置:编程学习 > JAVA >>

关于项目中分页错误的问题讨论

图-1


由图一可以知道数据总共有26条,第一页显示的是:第1条到第15条, 后面显示的是:第一页 上一页 [1] 2 下一页 最后页    第页 
图-2

由图二可以看出这里显示:共11条, 显示第16条到第11条
应该是是显示:共26条, 显示第16条到第26条
而且后面的显示也是不对的,应该显示的像图-1一样。

整个项目中所有分页的地方都是这个问题,我想肯定是page.javg这个工具类里面计算错误了,由于刚刚参加工作,还请各位高手帮忙看看。下面是page.java 这个类
package com.zznode.framework.utils.page;

import java.util.ArrayList;
import java.util.List;

import com.zznode.framework.Constants;

/**
 * 分页对象.
 * 用于包含数据及分页信息的对象,Page类实现了用于显示分页信息的基本方法,
 * 但未指定所含数据的类型,可根据需要实现以特定方式组织数据的子类,
 * 如RowSetPage以RowSet封装数据,ListPage以List封装数据。
 *
 * @author ajax
 */
public class Page implements java.io.Serializable {

    /**
     * 每页的记录数,实际记录数小于或等于它
     */
    private int pageSize = Constants.DEFAULT_PAGE_SIZE;
    /**
     * 当前页第一条数据在数据库中的位置
     */
    private int start;
    /**
     * 当前页包含的记录数,avaCount <= pageSize
     */
    private int avaCount;
    /**
     * 总记录数
     */
    private int totalSize;
    /**
     * 当前页中存放的记录
     */
    private List data;
    /**
     * 当前页码
     */
    private int currentPageNo;
    /**
     * 总页数
     */
    private int totalPageCount;

    /**
     * 构造方法,只构造空页
     */
    public Page() {
        this(0, 0, 0, Constants.DEFAULT_PAGE_SIZE, new ArrayList());
    }

    /**
     * 默认构造方法
     *
     * @param start     本页数据在数据库中的起始位置
     * @param avaCount  本页包含的数据条数
     * @param totalSize 数据库中总记录条数
     * @param pageSize  本页容量
     * @param data      本页包含的数据
     */
    public Page(int start, int avaCount, int totalSize, int pageSize, List data) {
        this.avaCount = avaCount;
        this.pageSize = pageSize;
        this.start = start;
        this.totalSize = totalSize;
        this.data = data;

        this.currentPageNo = (start - 1) / pageSize + 1;
        // this.totalPageCount = (totalSize + pageSize - 1) / pageSize;
        
        if (totalSize % pageSize == 0) {
this.totalPageCount = totalSize / pageSize;
} else {
this.totalPageCount = totalSize / pageSize + 1;
}
        if (totalSize == 0 && avaCount == 0) {
            this.currentPageNo = 1;
            this.totalPageCount = 1;
        }
    }

    /**
     * 当前页中的记录
     */
    public List getResult() {
        return this.data;
    }

    /**
     * 取本页数据容量(本页能包含的记录数)
     */
    public int getPageSize() {
        return this.pageSize;
    }

    /**
     * 是否有下一页
     */
    public boolean hasNextPage() {
        return (this.getCurrentPageNo() < this.getTotalPageCount());
    }

    /**
     * 是否有上一页
     */
    public boolean hasPreviousPage() {
        return (this.getCurrentPageNo() > 1);
    }

    /**
     * 获取当前页第一条数据在数据库中的位置
     */
    public int getStart() {
        return start;
    }

    /**
     * 获取当前页最后一条数据在数据库中的位置
     */
    public int getEnd() {
        int end = this.getStart() + this.getSize() - 1;
        if (end < 0)
            end = 0;
        return end;
    }

    /**
     * 获取上一页第一条数据在数据库中的位置
     */
    public int getStartOfPreviousPage() {
        return Math.max(start - pageSize, 1);
    }

    /**
     * 获取下一页第一条数据在数据库中的位置
     */
    public int getStartOfNextPage() {
        return start + avaCount;
    }

    /**
     * 获取任一页第一条数据在数据库中的位置,每页条数使用默认值
     */
    public static int getStartOfAnyPage(int pageNo) {
        return getStartOfAnyPage(pageNo, Constants.DEFAULT_PAGE_SIZE);
    }

    /**
     * 获取任一页第一条数据在数据库中的位置
     */
    public static int getStartOfAnyPage(int pageNo, int pageSize) {
        int startIndex = (pageNo - 1) * pageSize + 1;
        if (startIndex < 1) startIndex = 1;
        return startIndex;
    }

    /**
     * 取本页包含的记录数
     */
    public int getSize() {
        return avaCount;
    }

    /**
     * 取数据库中包含的总记录数
     */
    public int getTotalSize() {
        return this.totalSize;
    }

    /**
     * 取当前页码
     */
    public int getCurrentPageNo() {
        return this.currentPageNo;
    }

    /**
     * 取总页码
     */
    public int getTotalPageCount() {
        return this.totalPageCount;
}
public int getAvaCount() {
return avaCount;
}

public void setAvaCount(int avaCount) {
this.avaCount = avaCount;
}

public List getData() {
return data;
}

public void setData(List data) {
this.data = data;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public void setStart(int start) {
this.start = start;
}

public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}

public void setCurrentPageNo(int currentPageNo) {
this.currentPageNo = currentPageNo;
}

public void setTotalPageCount(int totalPageCount) {
this.totalPageCount = totalPageCount;
}

}


  分页 java
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,