2022. 9. 4. 13:42
반응형
현재 페이지, 총 아이템 개수, 한 페이지에 표시할 아이템 개수를 설정
네비게이션 시작/끝 페이지 번호, 이전/다음 버튼 유무, 네비게이션 마지막 번호 등이 결정된다.
한 화면에 표시되는 페이지 번호 최대 표시 개수는 10으로 고정해두었는데 바꾸려면 navSize를 수정하면 된다.
Pagination pagination = new Pagination(page, totalItemCount, pageSize);
화면상에 표시할 때
pagination.getStartPage() 부터 pagination.getLastPage() 까지 번호 추가
pagination.hasPrev() == true 인 경우 이전 버튼 추가
pagination.hasNext() == true 인 경우 다음 버튼 추가
pagination을 페이지로 가져와 대충 만들어보면 다음과 같은 모양으로 나온다.
public class Pagination {
private int page = 1;
private int pageSize = 10;
private int totalItemCount;
private int startPage;
private int lastPage;
private int endPage;
private int navSize = 10;
private boolean hasPrev;
private boolean hasNext;
private int offset;
public Pagination(int page, int totalItemCount, int pageSize) {
this.pageSize = pageSize;
this.totalItemCount = totalItemCount;
this.page = page;
setup();
}
public Pagination(int page, int totalItemCount) {
this.totalItemCount = totalItemCount;
this.page = page;
setup();
}
private void setup() {
endPage = (int) Math.ceil((double) totalItemCount / pageSize);
if(page > endPage) page = endPage;
else if(page <= 0) page = 1;
startPage = ((int) Math.ceil((double) page/navSize) - 1) * navSize + 1;
lastPage = Math.min(startPage + navSize - 1, endPage);
offset = pageSize * (page - 1);
hasPrev = startPage > 1;
hasNext = lastPage < endPage;
}
public int getPage() {
return this.page;
}
public int getPageSize() {
return this.pageSize;
}
public int getTotalItemCount() {
return this.totalItemCount;
}
public int getStartPage() {
return startPage;
}
public int getLastPage() {
return lastPage;
}
public int getEndPage() {
return endPage;
}
public int getOffset() {
return offset;
}
public boolean getHasPrev() {
return hasPrev;
}
public boolean getHasNext() {
return hasNext;
}
}
https://github.com/juragi/spring-demo/commit/e8a654ec30548da757904e0347cb3b010f93511b
반응형
'dev' 카테고리의 다른 글
[Java/Spring] RestTemplate 이용 get, post 테스트 (3) | 2022.11.03 |
---|---|
[JavaScript] input 소수 입력 (자리수 제한) (0) | 2022.10.27 |
[JavaScript] input 숫자 3자리마다 콤마(,) 넣기 (0) | 2022.10.25 |
[Java/Spring] NamedParameterJdbcTemplate 활용 DB 접근 (1) | 2022.09.22 |
[Java] 간단한 Spring Boot 프로젝트 생성, 실행 (0) | 2022.09.03 |
[JavaScript] HTML canvas 마우스로 그리기 (0) | 2022.06.17 |
[Java] 이름 마스킹 (0) | 2022.04.22 |
[JavaScript] input 숫자만 입력하도록 하기 (0) | 2022.04.15 |