後臺管理實現分頁顯示----核心分頁物件
阿新 • • 發佈:2018-11-08
需求
實現簡單的分頁管理資料的頁面功能,類似下面
採用物理分頁方式:即每開啟一頁都互動從後臺取回需要頁資料
同時也有邏輯分頁方式,就是一次互動,後臺把所有的所有頁面資料一起發過來,前端自己分頁顯示。雖互動簡單,但也不沒了實時性,不提倡。
解決方法
物理分頁,互動核心物件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
}