Search
Duplicate

[스프링 게시판] 페이징 표시할 게시글 수 지정

@3/11/2023

컨트롤러 쿠키 처리

@GetMapping("/posts/{pageNum}") public String postList( @PathVariable Integer pageNum, @CookieValue(required = false) Integer pageSize, Model model, HttpServletResponse response ) { if (pageSize == null || (pageSize !=10 && pageSize != 30 && pageSize != 50)) { log.info("Set cookie to 10"); Cookie pageSizeCookie = new Cookie("pageSize", "10"); response.addCookie(pageSizeCookie); pageSize = 10; } List<PostListDTO> postListDTOs = postService.findAll(pageNum, pageSize); model.addAttribute("postListDTOs", postListDTOs); // for paging Integer startPage = (pageNum - 1) / 5 + 1; model.addAttribute("startPage", startPage); model.addAttribute("currentPage", pageNum); // for pageSize radio button model.addAttribute("pageSize", pageSize); return "posts/postList"; }
Java
복사

라디오 버튼 설정

th:checked 이용함
라디오 버튼 누를 때마다 쿠키 재설정 자바스크립트 실행
<!-- page size --> <div class="container mb-1 d-flex justify-content-end"> <div class="btn-group" role="group" aria-label="Basic radio toggle button group"> <input type="radio" class="btn-check" name="btnradio" id="btnradio1" th:checked="${pageSize} == 10" onclick="setPageSizeCookie('10')"> <label class="btn-sm btn-outline-secondary py-0" for="btnradio1">10개</label> <input type="radio" class="btn-check" name="btnradio" id="btnradio2" th:checked="${pageSize} == 30" onclick="setPageSizeCookie('30')"> <label class="btn-sm btn-outline-secondary py-0" for="btnradio2">30개</label> <input type="radio" class="btn-check" name="btnradio" id="btnradio3" th:checked="${pageSize} == 50" onclick="setPageSizeCookie('50')"> <label class="btn-sm btn-outline-secondary py-0" for="btnradio3">50개</label> </div> </div>
HTML
복사

자바스크립트 쿠키 처리

쿠키 재설정 후 새로고침 하도록 함
<script type="text/javascript"> function setPageSizeCookie(pageSize) { document.cookie = "pageSize=" + pageSize; location.reload(); } </script>
JavaScript
복사
첫 번째 글 위치 기준으로 페이지 번호도 재설정해주고 싶지만 일단 나중으로 미룸