看看这个分页问题在哪 实在看不出

jiajv 2006-10-12 08:47:41


import org.apache.log4j.Logger;


import java.util.List;

/**
* @author
*/
public class ListPage implements Page {

private List elements;
private int pageSize;
private int pageNumber;

/**
* Construct a new ListPage. ListPage numbers are zero-based, so the
* first page is page 0.
*
* @param pageNumber the page number (zero-based);
* if Integer.MAX_VALUE will return the last page for the query
* @param pageSize the number of results to display on the page
*/
public ListPage(List elements, int pageNumber, int pageSize) {
this.elements = elements;
this.pageSize = pageSize;
this.pageNumber = pageNumber;
if (Integer.MAX_VALUE == this.pageNumber)
this.pageNumber = (getTotalNumberOfElements() / this.pageSize);
}

public boolean isFirstPage() {
return getPageNumber() == 0;
}

public boolean isLastPage() {
return getPageNumber() >= getLastPageNumber();
}

public boolean hasNextPage() {
return ((getPageNumber() + 1) * getPageSize()) <
(getTotalNumberOfElements() + 1);
}

public boolean hasPreviousPage() {
return getPageNumber() > 0;
}

public int getLastPageNumber() {
/*
* We use the Math.floor() method because page numbers are zero-based
* (i.e. the first page is page 0).
*/
double totalResults = new Integer(getTotalNumberOfElements()).doubleValue();
return new Double(Math.floor(totalResults / getPageSize())).intValue();
}
//测试此方法 list 有元素 可是size()==0
public List getThisPageElements() {
/*
* Since we retrieved one more than the specified pageSize when the
* class was constructed, we now trim it down to the pageSize if a next
* page exists.
*/
final int start = getPageNumber() * getPageSize();
return elements.subList(Math.min(start, getTotalNumberOfElements() + 1),
Math.min(start + getPageSize(), getTotalNumberOfElements() + 1));
//这个方法有问题 有记录 可size==○啊
}

public Logger getLogger() {
return Logger.getLogger(this.getClass());
}

/**
* this is 0-based, differently from list.size();
*/
public int getTotalNumberOfElements() {
return elements.size() - 1;
}

public int getThisPageFirstElementNumber() {
return getPageNumber() * getPageSize() + 1;
}

public int getThisPageLastElementNumber() {
int fullPage = getThisPageFirstElementNumber() + getPageSize() - 1;
return getTotalNumberOfElements() < fullPage ?
getTotalNumberOfElements() :
fullPage;
}

public int getNextPageNumber() {
return getPageNumber() + 1;
}

public int getPreviousPageNumber() {
return getPageNumber() - 1;
}


public int getPageSize() {
return pageSize;
}

public int getPageNumber() {
return pageNumber;
}


}

getThisPageElements这个方法有问题 有记录 可是size是0啊 高手给看看改好啊
...全文
224 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiajv 2006-10-13
  • 打赏
  • 举报
回复
为什么没人回答 是不是太长了
neptune0229 2006-10-13
  • 打赏
  • 举报
回复
final int start = getPageNumber() * getPageSize();
把final去掉试试???
jiajv 2006-10-13
  • 打赏
  • 举报
回复
这是hibernate 官方网站的 居然也有问题?
zhouzidane 2006-10-13
  • 打赏
  • 举报
回复
我还没写过类似的,我只在页面写过。
只能帮顶了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧