Java中的分页

Java中的分页,java,pagination,Java,Pagination,我编写了分页逻辑: 我的要求:要显示的元素总数:每页100个,如果我单击“下一步”,它将显示下100条记录,如果我单击“前100条记录” 初始可变值: 展示来源:1 showTo:100 最大元素数:取决于数据的大小 页面大小:100 代码: 在这里,我可以删除元素并将其添加到现有数据中。如果我添加并删除几个元素,则上述代码可以正常工作。但如果我一次删除或添加100个元素,则计数未正确显示。如果我添加并删除几个元素,则上述代码可以正常工作。一些备注: 行中showTo=showFrom+1

我编写了分页逻辑:

我的要求:要显示的元素总数:每页100个,如果我单击“下一步”,它将显示下100条记录,如果我单击“前100条记录”

初始可变值:

  • 展示来源:1
  • showTo:100
  • 最大元素数:取决于数据的大小
  • 页面大小:100
代码:

在这里,我可以删除元素并将其添加到现有数据中。如果我添加并删除几个元素,则上述代码可以正常工作。但如果我一次删除或添加100个元素,则计数未正确显示。如果我添加并删除几个元素,则上述代码可以正常工作。

一些备注:

  • 行中
    showTo=showFrom+100-1,为什么减1
  • 如果showTo等于paging.getTotalRec(),则下次按next时,showFrom将覆盖paging.getTotalRec()
  • 在上一部分中,缺少防止低于0的测试

希望这有助于…

一些需要改进的地方:

  • final int PAGE_SIZE=100替换“magic”值100
  • 排除冗余代码
到if/else之外,使您的逻辑更清晰

  • 确保上一个>=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相应地调整使用
    currentPage
    的变量。ex)currentPage>0而不是currentPage>1,currentPage而不是旧的(currentPage-1),(currentPage+1)而不是旧的currentPage
    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);
    }