Search

[스프링 게시판] 페이지 사이즈 변경 시 페이지 번호 재조정

@3/13/2023

페이지 사이즈 변경 시 현재 페이지 번호도 알맞게 변경

원래 페이지 사이즈 변경 시 무조건 1페이지로 이동하도록 했음
하지만 중간 페이지 탐색 중 페이지 사이즈를 변경할 경우 1페이지로 이동하면 다시 게시글을 찾아가야하는 불편함이 발생함
이를 해결하기 위해 페이지 사이즈를 변경하더라도 현재 탐색중인 게시글을 기준으로 페이지 번호도 알맞게 이동하도록 변경함
공식
(변경 후 페이지 번호) = Math.floor[{(현재 페이지 번호) - 1} * (이전 페이지 사이즈) / (변경 페이지 사이즈)] + 1
Java
복사
{(현재 페이지 번호) - 1} * 이전 페이지 사이즈 : 현재 페이지 번호의 첫번째 글보다 최신인 글의 개수(즉, 현재 페이지 이전 글의 개수)를 구함
이 개수를, 변경할 페이지 사이즈로 나누면 정수 또는 소수가 나옴
정수
이전 글들이, 변경할 페이지 사이즈 단위에 깔끔하게 담기기 때문에 바로 그 다음 페이지부터 시작(+1)하면 변경 전 최상단 글과 변경 후 최상단 글이 같음
소수
변경 전 최상단 글이 변경 후 페이지 단위로 포함되면서 페이지 사이즈가 소수점 버림에 의해 잘려나감. 잘려나간 소수를 복구(+1)해주면 변경 전 최상단 글이 변경 후 아래로 내려옴. 어쨌든 변경 후 페이지 내에 잘 있음
<script th:inline="javascript"> function setPageSizeCookie(pageSize) { document.cookie = "pageSize=" + pageSize; let newPageNum = Math.floor(([[${currentPage}]] - 1) * [[${pageSize}]] / pageSize) + 1 location.replace("/posts?currentPage=" + newPageNum); } </script>
Java
복사