关于项目中分页错误的问题讨论
图-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