@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
복사
•
첫 번째 글 위치 기준으로 페이지 번호도 재설정해주고 싶지만 일단 나중으로 미룸