Java 分页单击页面索引始终仅加载第一页
我试图使用hibernate对servlet中的一个表的行进行分页,但是一旦我点击了页面的desire索引,它总是只给出表的第一行 我的servlet代码: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
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;
}
}