스프링 부트/[스프링 부트] 게시판 무작정 따라하기

[스프링 부트] 게시판 무작정 따라하기 - 9. 페이징 처리 2편

sungw00 2023. 3. 13. 13:09
728x90

페이지 블럭 출력하기

nowPage: 현재 페이지

startPage: 블럭에서 보여줄 시작 페이지

endPage: 블럭에서 보여줄 마지막 페이지

 

boardlist.html에 다음 내용을 추가

    </table>

    <th:block th:each="page : ${#numbers.sequence(startPage, endPage)}">
      <a th:if="${page != nowPage}" th:href="@{/board/list(page = ${page - 1})}" th:text="${page}"></a>
      <strong th:if="${page == nowPage}" th:text="${page}" style="color : red"></strong>
    </th:block>
  </div>
</body>
</html>

페이지 블럭에 보이는 페이지가 현재 페이지와 다르다면 /board/list로 보낼 때 페이지를 -1하고,

페이지 블럭에 보이는 페이지가 현재 페이지와 같다면 눌렀을 때 서체와 색상을 강조

 

컨트롤러에 페이징 코드 추가

@GetMapping("/board/list")
    public String boardList(Model model, @PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) {

        Page<Board> list = boardService.boardList(pageable);

        int nowPage = list.getPageable().getPageNumber() + 1; // pageable이 가지고 있는 페이지는 0부터 시작하기때문에 1을 더함
        int startPage = Math.max(nowPage - 4, 1); // 1보다 작은 경우는 1을 반환
        int endPage = Math.min(nowPage + 5, list.getTotalPages()); // 전체 페이지보다 많은 경우는 전체 페이지를 반환

        model.addAttribute("list", list);
        model.addAttribute("nowPage", nowPage);
        model.addAttribute("startPage", startPage);
        model.addAttribute("endPage", endPage);

        return "boardlist";
    }

 

1페이지에서 3을 누르면 넘어가는 것을 확인할 수 있다.

728x90