java吧 关注:1,290,307贴子:12,818,447
  • 2回复贴,共1

哪位大神帮忙看看这段代码的错误

只看楼主收藏回复

关于分页的
Page类
import java.util.List; public class Page {
private int total; //总记录数
private int pageSize; //每页的记录数
private int totalPage; //总页数
private int pageNo; //第几页
private int prePage; //上一页
private int nextPage; //下一页
private List list;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getNextPage() {
if(getPageNo()==getTotalPage()){
nextPage=getPageNo();
}else{
nextPage=getPageNo()+1;
}
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPrePage() {
if(this.getPageNo()==1){
prePage=getPageNo();
}else{
prePage=getPageNo()-1;
}
return prePage;
}
public void setPrePage(int prePage) {
this.prePage = prePage;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getTotalPage() {
if(getTotal()%getPageSize()==0){
totalPage=getTotal()/getPageSize();
}else{
totalPage=getTotal()/getPageSize()+1;
}
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
}
TipDao中的方法
public Page showPageTipByBoard(int boardid, int pageNo, int pageSize) {
String hql="from Tip t where t.board.boardid=" + boardid;
Page page = new Page();
int count = getHibernateTemplate().find(hql).size();
int offset = (pageNo - 1) * pageSize;
List pageList=getHibernateTemplate().getSessionFactory()
.openSession().createQuery(hql).setFirstResult(offset)
.setMaxResults(pageSize)
.list();
page.setList(pageList);
page.setTotal(count);
page.setPageNo(pageNo);
page.setPageSize(pageSize);
return page; }
tipservice是调用tipdao的
public String showpageByboardTip(){
int pageSize = 2;
TipInfo tipinfo=null;
Board board = boardservice.showBoardById(boardid); // 取得版块信息
this.setPageNo(pageNo);
//List listTip = tipservice.showTipByBoard(boardid);// 取得该板块主题列表
info = new ArrayList<TipInfo>();
page = tipservice.showPageTipByBoard(boardid, this.getPageNo(), pageSize);
for (int i = 0; i < pageSize; i++) {
tip = (Tip) page.getList().get(i); // 循环取得该页主题对象
int replycount = replyservice.showAllReply(tip.getTipid());
Reply lastreply = new Reply();
tipinfo = new TipInfo();
User user = userservice.showUserById(tip.getUser().getUserid()); // 取得该主题的发布用户
tipinfo.setTitle(tip.getTitle());
tipinfo.setReplyCount(replycount);
tipinfo.setUsername(user.getUsername());
tipinfo.setTipid(tip.getTipid());
if(lastreply==null);
info.add(tipinfo);
}
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("board", board);
return SUCCESS;
}
显示最后一页的时候出现错误java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
角标越界,我感觉是Page.list出现的错误,该怎么解决啊


1楼2012-05-27 21:32回复
    找到问题了是for (int i = 0; i < pageSize; i++) 这里出错,最后一页没有那么多数据,谢谢大家


    2楼2012-05-27 21:41
    回复
      2025-12-07 16:06:28
      广告
      不感兴趣
      开通SVIP免广告
      猜到是循环的问题,就是不太确定,解决了就好


      3楼2012-05-27 21:50
      回复