컨트롤러에서 파라미터에 PageableDefault()
를 추가한다.
@GetMapping({"","/"})
//메인페이지로 갈때 데이터를 가져가야한다.
public String index(Model model, @PageableDefault(size=2, sort="id", direction=Sort.Direction.DESC) Pageable pageable) {
model.addAttribute("boards", boardService.boardList(pageable));
return "index"; //viewResolver 작동
}
return "index" 부분이 pageable를 담을건데,
BoardController에서 서비스로 들어가서 글목록을 호출할때 findAll()로 호출하는데,
이때 특정페이지로 호출할 수 있다.
List<> -> Page<>
로 변경
//글 목록리스트
@Transactional(readOnly=true)
public Page<Board> boardList(Pageable pageable) {
return boardRepository.findAll(pageable);
}
<c:forEach var="board" items="${boards.content}">
<div class="card">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<p class="card-text">${board.content}</p>
<p class="card-text">${board.createDate }</p>
<p class="card-text">${board.user.username }</p>
<a href="#" class="btn btn-dark">상세보기</a>
</div>
</div>
</c:forEach>
<!-- 페이징처리 -->
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first}">
<li class="page-item disabled"><a class="page-link"
href="?page=${boards.number-1}">이전</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link"
href="?page=${boards.number-1}">이전</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last}">
<li class="page-item disabled"><a class="page-link"
href="?page=${boards.number+1}">다음</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link"
href="?page=${boards.number+1}">다음</a></li>
</c:otherwise>
</c:choose>
</ul>
다음 버튼 누르면 이동하고, 이전버튼누르면 잘 이동한다.