public class PageHandler {
private SearchCondition sc;
public final int naviSize = 10; // page navigation size
private int totalCnt; // 게시물의 총 갯수
private int totalPage; // 전체 페이지의 갯수
private int beginPage; // 화면에 보여줄 첫 페이지
private int endPage; // 화면에 보여줄 마지막 페이지
private boolean showNext = false; // 이후를 보여줄지의 여부. endPage==totalPage이면, showNext는 false
private boolean showPrev = false; // 이전을 보여줄지의 여부. beginPage==1이 아니면 showPrev는 false
public PageHandler(int totalCnt, Integer page) {
this(totalCnt, new SearchCondition(page, 10));
}
public PageHandler(int totalCnt, Integer page, Integer pageSize) {
this(totalCnt, new SearchCondition(page, pageSize));
}
public PageHandler(int totalCnt, SearchCondition sc) {
this.totalCnt = totalCnt;
this.sc = sc;
doPaging(totalCnt, sc);
}
private void doPaging(int totalCnt, SearchCondition sc) {
this.totalPage = (int)Math.ceil(totalCnt/(double)sc.getPageSize());
this.sc.setPage(Math.min(sc.getPage(), totalPage)); // page가 totalPage보다 크지 않게
this.beginPage = (this.sc.getPage() -1) / naviSize * naviSize + 1; // 11 -> 11, 10 -> 1, 15->11. 따로 떼어내서 테스트
this.endPage = Math.min(beginPage + naviSize - 1, totalPage);
this.showPrev = beginPage!=1;
this.showNext = endPage!=totalPage;
}
'JAVA > 실습' 카테고리의 다른 글
자바 게시판 만들기(2) 게시판 구현 (0) | 2023.09.12 |
---|---|
[JAVA] 틱택토 게임 (0) | 2023.09.10 |