Java中的分页
我编写了分页逻辑: 我的要求:要显示的元素总数:每页100个,如果我单击“下一步”,它将显示下100条记录,如果我单击“前100条记录” 初始可变值:Java中的分页,java,pagination,Java,Pagination,我编写了分页逻辑: 我的要求:要显示的元素总数:每页100个,如果我单击“下一步”,它将显示下100条记录,如果我单击“前100条记录” 初始可变值: 展示来源:1 showTo:100 最大元素数:取决于数据的大小 页面大小:100 代码: 在这里,我可以删除元素并将其添加到现有数据中。如果我添加并删除几个元素,则上述代码可以正常工作。但如果我一次删除或添加100个元素,则计数未正确显示。如果我添加并删除几个元素,则上述代码可以正常工作。一些备注: 行中showTo=showFrom+1
- 展示来源:1
- showTo:100
- 最大元素数:取决于数据的大小
- 页面大小:100
- 行中
showTo=showFrom+100-1代码>,为什么减1
- 如果showTo等于paging.getTotalRec(),则下次按next时,showFrom将覆盖paging.getTotalRec()
- 在上一部分中,缺少防止低于0的测试
希望这有助于…一些需要改进的地方:
- 用
final int PAGE_SIZE=100替换“magic”值100代码>
- 排除冗余代码
- 确保上一个>=0和下一个1){
--当前页面;
}
}
showFrom=(当前页面-1)*页面大小+1;
如果(从<0开始显示){
showFrom=0
}
showTo=当前页面*页面大小;
if(showTo>=paging.getTotalRec()){
showTo=paging.getTotalRec();
}
paging.setShowTo(showTo);
paging.setShowFrom(showFrom);
}
在右侧,当您提出问题时,有一个方便的“如何格式化”框。值得一读,就像问题区域上方的[?]一样。
到底是什么?布莱恩:你能修改一下代码吗,我不明白我遗漏了什么。布莱恩:下一步工作正常,上一个逻辑失败。初始值为1到100,共288.101到200201到288。如果单击“上一步”,它将显示101到188。而不是200。Brain:总计数并不总是100的倍数。在我之前的注释中,总计数是288。Brain:我从Ajax调用此方法,我的分页从0开始。因此,最初currentPage是0,如果单击“下一步”,我将递增;如果单击“上一步”,我将递减当前页面值。页面大小始终为100,页面数量取决于添加和删除元素。我是否需要接受任何特殊说明。@user569125相应地调整使用分页
的变量。ex)currentPage>0而不是currentPage>1,currentPage而不是旧的(currentPage-1),(currentPage+1)而不是旧的currentPagecurrentPage
if(paging.getAction().equalsIgnoreCase("Next")){ paging.setTotalRec(availableList.size()); showFrom = (showTo + 1); showTo = showFrom + 100- 1; if(showTo >= paging.getTotalRec()) showTo = paging.getTotalRec(); paging.setShowFrom(showFrom); paging.setShowTo(showTo); } else if(paging.getAction().equalsIgnoreCase("Previous")){ showTo = showFrom - 1; showFrom = (showFrom - 100); paging.setShowTo(showTo); paging.setShowFrom(showFrom); paging.setTotalRec(availableList.size()); }
paging.setShowTo(showTo); paging.setShowFrom(showFrom); paging.setTotalRec(availableList.size());
final int PAGE_SIZE = 100; int numberOfPages = -1; int currentPage = -1; public void initializeVariables(){ paging.setTotalRec(availableList.size()); showFrom = 1; showTo = PAGE_SIZE; //keep track of how many pages there should be numberOfPages = paging.getTotalRec()/PAGE_SIZE; currentPage = 1; } public void handlePagingAction(){ if(paging.getAction().equalsIgnoreCase("Next")){ if(currentPage < numberOfPages){ ++currentPage; } }else if(paging.getAction().equalsIgnoreCase("Previous")){ if(currentPage > 1){ --currentPage; } } showFrom = (currentPage - 1) * PAGE_SIZE + 1; if(showFrom < 0){ showFrom = 0 } showTo = currentPage * PAGE_SIZE; if(showTo >= paging.getTotalRec()){ showTo = paging.getTotalRec(); } paging.setShowTo(showTo); paging.setShowFrom(showFrom); }