기존에 무한스크롤링으로 되어있던 상품리스트 페이지를 페이지네이션으로 바꿔야할 일이 생겨서 오랜만에 페이지네이션을 공부하게되었다.

 

현재 페이지 번호와 데이터 전체 수를 파라미터로 받아서 front로 보낼 수 있도록 함수를 구현했다.


private void getGoodsPaging(Map<String, Object> params, Map<String, Object> result){
    int page = params.getInt("page"); //현재 페이지 (get)
    int totalCount = params.getInt("totalCount"); //row 전체의 수 (get)
    int beginPage;  //출력 시작
    int endPage;    //출력 끝
    int displayRow = params.getInt("pageSize");  //한 페이지에 몇 개의 데이터 (선택 set)
    int displayPage = params.getInt("displayPageSize");  //한 페이지에 몇 번의 페이지까지 (선택 set)
    boolean prev; //prev 버튼이 보일건지 안보일건지
    boolean next; //next 버튼이 보일건지 안보일건지

    endPage = ((int) Math.ceil(page / (double) displayPage)) * displayPage;
    beginPage = endPage - (displayPage - 1);
    int totalPage = (int) Math.ceil(totalCount / (double) displayRow);
    if (totalPage <= endPage) {
        endPage = totalPage;
        next = false;
    } else {
        next = true;
    }
    prev = (beginPage == 1) ? false : true;

    result.put("beginPage", beginPage);
    result.put("endPage", endPage);
    result.put("next", next);
    result.put("prev", prev);
}

+ Recent posts