바로 전에 생성했던 SeachVO클래스와 PageVO클래스로 게시물들을 사용자에게 나눠서 보여줄순있습니다. 하지만 위 사진과 같이 페이지 번호와 이전 다음버튼을 사용자가 누를수있는 네비게이션 바를 개발을 해줘야 페이징을 제대로 만들었다고 볼수있습니다. 이 네비게이션바를 만들기위해선 총 4가지의 정보가 필요합니다
1.beginPage(현재 내 페이지의 시작페이지)
2. endPage(현재 내 페이지의 끝페이지)
-> 이 두가지를 알아야 프론트엔드쪽에서 jstl을 활용해 반복문을 돌려서 페이지번호를 사용자에게 보여줄수있다
3.prev(이전 버튼이 있어야하는지의 대한 논리값)
4.next(다음 버튼이 있어야하는지의 대한 논리값)
->이 두가지 논리값을 알아야 프론트엔드쪽에서 jstl을 활용해 if문을 사용해 버튼을 보여줄지 안보여줄지 설정할수있다
그럼 이 4가지 정보를 알아내기 위해선 어떤 정보를 알고있어야 할까요.
그건 바로 PageVO객체,조회한 총 게시물,한화면에 보여질 페이지수를 알고있으면 위 4가지 정보들을 계산할수있습니다
한번 코드를 보며 알아보도록 하겠습니다 (주석 중요)
#PageCreator.java
|
package com.example.demo.paging;
public class PageCreator {
private PageVO paging; // PageVO객체
private int beginPage;
private int endPage;
private int totalArticles; //조회한 총 게시물
private boolean prev;
private boolean next;
private final int displayPage = 4; //한화면에 보여질 페이지수
public void calc() { // 4가지 정보를 계산하는 메서드
endPage = (int)Math.ceil(paging.getPage() / (double)displayPage) * displayPage;
beginPage = endPage - displayPage + 1;
prev = (beginPage == 1) ? false : true;
next = (totalArticles > endPage * paging.getCountPerPage()) ? true : false;
if(!next) {
endPage = (int)Math.ceil((double)totalArticles / paging.getCountPerPage());
}
}
public PageVO getPaging() {
return paging;
}
public void setPaging(PageVO paging) {
this.paging = paging;
}
public int getBeginPage() {
return beginPage;
}
public void setBeginPage(int beginPage) {
this.beginPage = beginPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public int getTotalArticles() {
return totalArticles;
}
public void setTotalArticles(int totalArticles) { //조회한 총 게시물을 주입한후 계산
this.totalArticles = totalArticles;
calc();
}
public boolean isPrev() {
return prev;
}
public void setPrev(boolean prev) {
this.prev = prev;
}
public boolean isNext() {
return next;
}
public void setNext(boolean next) {
this.next = next;
}
public int getDisplayPage() {
return displayPage;
}
}
|
cs |
'Spring Boot 개인 프로젝트 > 게시판(Board)' 카테고리의 다른 글
(6) BoardController 구현 (0) | 2021.09.19 |
---|---|
(5) 지금까지 한 내용 중간정리 그리고 IBoardService인터페이스와 BoardService구현 (0) | 2021.09.18 |
(4 - 1)(게시물 리스트 페이징) 검색기능과 페이지 정보가 포함된 클래스들 생성 (0) | 2021.09.18 |
(3) Mybatis를 사용하기위한 IBoardMapper 인터페이스 생성과 BoardMapper.xml생성 (0) | 2021.09.18 |
(2) BoardVO클래스 생성 (0) | 2021.09.18 |