Java 分页单击页面索引始终仅加载第一页

Java 分页单击页面索引始终仅加载第一页,java,hibernate,servlets,jakarta-ee,pagination,Java,Hibernate,Servlets,Jakarta Ee,Pagination,我试图使用hibernate对servlet中的一个表的行进行分页,但是一旦我点击了页面的desire索引,它总是只给出表的第一行 我的servlet代码: int pageIndex = 0; int totalNumberOfRecords = 0; int numberOfRecordsPerPage = 5; String sPageIndex = request.getParameter("pageIndex"); if (sPageInde

我试图使用hibernate对servlet中的一个表的行进行分页,但是一旦我点击了页面的desire索引,它总是只给出表的第一行

我的servlet代码:

    int pageIndex = 0;
    int totalNumberOfRecords = 0;
    int numberOfRecordsPerPage = 5;

    String sPageIndex = request.getParameter("pageIndex");

    if (sPageIndex == null) {
        pageIndex = 1;
    } else {
        pageIndex = Integer.parseInt(sPageIndex);
    }
    int s = (pageIndex * numberOfRecordsPerPage) - numberOfRecordsPerPage;


List<ProductHasSize> phs = ses.createCriteria(ProductHasSize.class)
                    .setFirstResult(s)
                    .setMaxResults(numberOfRecordsPerPage)
                    .list();

            for (ProductHasSize pro : phs) {... some html content here...}
            List<ProductHasSize> phs1 = ses.createCriteria(ProductHasSize.class)
                .setProjection(Projections.rowCount()).list();
        Iterator i = phs1.iterator();
        if (i.hasNext()) {
            Object o = i.next();
            totalNumberOfRecords = Integer.parseInt(o.toString());
        }

        int noOfPages = totalNumberOfRecords / numberOfRecordsPerPage;
        if (totalNumberOfRecords > (noOfPages * numberOfRecordsPerPage)) {
            noOfPages = noOfPages + 1;
        }
        for (int j = 1; j <= noOfPages; j++) {
            String myurl = "products.jsp?pageIndex=" + j;
            String active = j == pageIndex ? "active" : "";
            pagination = pagination + "<li class='" + active + "'><a href=" + myurl + ">" + j + "</a></li>";

        }
intpageindex=0;
int totalNumberOfRecords=0;
int numberOfRecordsPerPage=5;
字符串sPageIndex=request.getParameter(“pageIndex”);
如果(sPageIndex==null){
pageIndex=1;
}否则{
pageIndex=Integer.parseInt(sPageIndex);
}
int s=(页面索引*NumberOfRecordsPage)-NumberOfRecordsPage;
列表phs=ses.createCriteria(ProductHasSize.class)
.setFirstResult(s)
.setMaxResults(numberOfRecordsPerPage)
.list();
对于(ProductHasSize-pro:phs){…这里有一些html内容…}
列表phs1=ses.createCriteria(ProductHasSize.class)
.setProjection(Projections.rowCount()).list();
迭代器i=phs1.Iterator();
if(i.hasNext()){
对象o=i.next();
totalNumberOfRecords=Integer.parseInt(o.toString());
}
int noOfPages=总NumberOfRecords/NumberOfRecordsPage;
if(totalNumberOfRecords>(NoofPage*numberOfRecordsPerPage)){
noOfPages=noOfPages+1;
}
对于(int j=1;j尝试替换:

 if (i.hasNext()) {
与:

然后像这样编写while循环:

  while(i.hasNext()) {
        Object o = i.next();
        totalNumberOfRecords += Integer.parseInt(o.toString());

 int noOfPages = totalNumberOfRecords / numberOfRecordsPerPage;
    if (totalNumberOfRecords > (noOfPages * numberOfRecordsPerPage)) {
        noOfPages = noOfPages + 1;
    }
  }

要调试此代码,您必须在每个阶段都放置日志,并确保在每个阶段都获得所需的结果。因为错误可能存在于代码中的任何位置。最后一个
}
是为了什么?将
if
更改为
,而
并没有解决问题。}是结束时间,那么
totalNumberOfRecords=Integer.parseInt呢(o.toString());}
I更新了代码
int noofpage=0;而(I.hasNext()){Object o=I.next();totalNumberOfRecords=Integer.parseInt(o.toString());noofpage=totalNumberOfRecords/numberofrecordspage;if(totalNumberOfRecords>(noOfPages*numberOfRecordsPerPage)){noOfPages=noOfPages+1;}}
因为变量对for循环不可见,但很抱歉仍然会遇到相同的问题。@johndoe尝试在:totalNumberOfRecords+=Integer.parseInt(o.toString())中添加+类似于上面的内容;
  while(i.hasNext()) {
        Object o = i.next();
        totalNumberOfRecords += Integer.parseInt(o.toString());

 int noOfPages = totalNumberOfRecords / numberOfRecordsPerPage;
    if (totalNumberOfRecords > (noOfPages * numberOfRecordsPerPage)) {
        noOfPages = noOfPages + 1;
    }
  }