1. 程式人生 > >後臺管理實現分頁顯示----核心分頁物件

後臺管理實現分頁顯示----核心分頁物件

需求

實現簡單的分頁管理資料的頁面功能,類似下面
在這裡插入圖片描述
採用物理分頁方式:即每開啟一頁都互動從後臺取回需要頁資料

同時也有邏輯分頁方式,就是一次互動,後臺把所有的所有頁面資料一起發過來,前端自己分頁顯示。雖互動簡單,但也不沒了實時性,不提倡。


解決方法

物理分頁,互動核心物件Page

package xyz.cglzwz.bean;

import java.util.List;

/**
 * 分頁物件
 * 用於封裝當前頁的分頁相關的所有資料
 *
 * @author chgl16
 * @date 2018.10.8
 */

public class
Page { /** 當前頁的資料 */ private List<Transaction> dataArray; /** 首頁 */ private Integer firstPage; /** 上一頁 */ private Integer prePage; /** 下一頁 */ private Integer nextPage; /** 末頁、總頁數 */ private Integer totalPage; /** 當前頁 */ private Integer currentPage; /** 總記錄數 */
private Integer totalCount; /** 每頁顯示的記錄數 */ private Integer pageSize; public List<Transaction> getDataArray() { return dataArray; } public void setDataArray(List<Transaction> dataArray) { this.dataArray = dataArray; } public Integer getFirstPage
() { // 首頁直接返回1 return 1; } public void setFirstPage(Integer firstPage) { this.firstPage = firstPage; } /** * 計算上一頁 * * @return prePage */ public Integer getPrePage() { return this.getCurrentPage() == this.getFirstPage() ? 1 : this.getCurrentPage() - 1; } public void setPrePage(Integer prePage) { this.prePage = prePage; } /** * 計算下一頁 * * @return nextPage */ public Integer getNextPage() { return this.getCurrentPage() == this.getTotalPage() ? this.getTotalPage() : this.getCurrentPage() + 1; } public void setNextPage(Integer nextPage) { this.nextPage = nextPage; } /** * 通過記錄數計算總頁數 * * @return totalPage */ public Integer getTotalPage() { return this.getTotalCount() % this.getPageSize()==0 ? this.getTotalCount() / this.getPageSize() : this.getTotalCount() / this.getPageSize() + 1; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } }

業務層只需要根據頁面大小pageSize和頁碼currentPage的需求,封裝返回Page物件即可

package xyz.cglzwz.service;

import xyz.cglzwz.bean.Page;

/**
 * 獲取返回需求頁頁面資料業務
 *
 * @author chgl16
 * @date 2018.10.12
 */

public interface PageService {
    /**
     * 通過傳遞當前頁碼和頁面大小
     * 來獲取當前頁的資料,封裝在Page返回
     *
     * @param currentPage
     * @param pageSize
     * @return Page
     */
    public Page getPage(Integer currentPage, Integer pageSize) throws Exception;
}

ajax互動請求(傳遞頁面大小和請求頁碼)

$.ajax ({
        type: "POST",
        url: "getdata",
        dataType: "json",
        data: {
            "currentPage":currentPage,  
            "pageSize":pageSize,
        },
        success:function(data) {
            console.info("獲取資料成功");
            // 封裝page物件
            setPage(data);
            // 動態<td>填充當前頁
            fillPage();
            // 頁面顯示記錄數和頁數資訊
            showInfomation();
            // 重新整理顯示腳步頁碼佈局
            paginationFresh();
        },
        error:function(data) {
            console.error("獲取資料失敗");
        }
    });

互動json

{
    "currentPage":1,
    "dataArray":[
         {"address":"","amount":0,"flag":false,"id":1,"log":"","time":"","today":"","yesterday":""},
         {"address":"","amount":0,"flag":false,"id":8888,"log":"","time":"","today":"","yesterday":""},
         {"address":"","amount":0,"flag":false,"id":8889,"log":"","time":"","today":"","yesterday":""},
         {"address":"","amount":0,"flag":false,"id":8890,"log":"","time":"","today":"","yesterday":""}
    ],
    "firstPage":1,
    "nextPage":1,
    "pageSize":5,
    "prePage":1,
    "totalCount":4,
    "totalPage":1
}