Java(Struts 2ベース)ページング実装コード

6279 ワード

ページング実装の基本手順は次のとおりです.
1.自分のペーパの基本パラメータを設定する(プロファイルから読み込むことができる)
■1ページあたりのレコード数
■毎回最大何ページまで表示
2.ページャのその他のパラメータを設定する関数を作成する
主なパラメータは次のとおりです.
合計レコード数
合計ページ数
≪現在のページ番号|Current Page Number|oem_src≫:現在表示されているページ数
1ページあたりのレコード数
現在のページの開始行(最初の行は0行)
第1ページ番号
最後のページ番号
次ページ番号
前ページ番号
画面に表示される開始ページ番号
画面に表示される終了ページ番号
パラメータの基本的な実現原理:以上の各パラメータを設定し、実際には3つのパラメータだけで他のすべての変数を設定することができます.すなわち、総記録本数、1ページあたりの記録数、毎回最大何ページまで表示しますか.
ページング器のコードは以下のように実現される(get,set関数を省略する):
    Page.java
 
  
{
        this.onePageSize = Integer.valueOf(PageResource.get(PageResource.ONE_PAGE_SIZE));
        this.displayPageCount = Integer.valueOf(PageResource.get(PageResource.DISPLAY_PAGE_COUNT)) - 1;
    }

    /** , displayPageCount+1 */
    private int displayPageCount;

    /** */
    private int onePageSize;

    /** */
    private int totalRecord;

    /** */
    private int totalPage;

    /** */
    private int currentPageNum = 1;

    /** ( 0 ) */
    private int currentStartRow;

    /** */
    private int firstPageNum = 1;

    /** */
    private int lastPageNum;

    /** */
    private int nextPageNum;

    /** */
    private int prevPageNum;

    /** */
    private int startPageNum;

    /** */
    private int endPageNum;

    /**
     *
     * @param onePageSize
     * @param currentPageNum
     * @param totalRecord
     */
    public Page(int totalRecord) {
        this.totalRecord = totalRecord;
        this.setPageInfo();
    }

    public Page() {
    }

    public void setPageInfo() {
        this.totalPage = (totalRecord + onePageSize - 1) / onePageSize;
        this.currentPageNum = Math.max(1, Math.min(currentPageNum, totalPage));

        this.lastPageNum = this.totalPage;
        this.nextPageNum = Math.min(this.totalPage, this.currentPageNum + 1);
        this.prevPageNum = Math.max(1, this.currentPageNum - 1);

        //
        this.currentStartRow = (this.currentPageNum - 1) * onePageSize;

        startPageNum = Math.max(this.currentPageNum - displayPageCount / 2,
                firstPageNum);
        endPageNum = Math.min(startPageNum + displayPageCount, lastPageNum);
        if (endPageNum - startPageNum < displayPageCount) {
            startPageNum = Math.max(endPageNum - displayPageCount, 1);
        }
    }


3.フロントエンドコードの作成(Struts 2を例に)
フロントで各ジャンプページのリンクをクリックすると、ジャンプするページ番号と総ページ数をバックグラウンドに伝えるだけで、バックグラウンドは改ページ器を再更新し、ページ番号のジャンプを実現します.
 
  

           

                :
               
                :
               
           

           
               
                   
               
               
                   
               
           

            トップページ

           
               
                   
               
               
                   
               
           

            のページ

           
               
               
               
                   
                       
                   

                   
                       
                           
                               
                           
                           
                               
                           
                       

                       
                   

               

           

           
               
                   
               
               
                   
               
           

            のページ

        
               
                   
               
               
                   
               
           

         ページ