@Controller
@RequiredArgsConstructor
public class HomeController {
private final BoardService boardService;
@RequestMapping
public String home(Model model) {
model.addAttribute("boards", boardService.findAll());
return "index";
}
}
@RequiredArgsConstructor
@Service
@Transactional(readOnly = true)
public class BoardService {
public List<Board> findAll() {
return boardRepository.findAll();
}
}
@RequiredArgsConstructor
@Service
@Transactional(readOnly = true)
public class BoardService {
public Page<Board> findAll(Pageable pageable) {
return boardRepository.findAll(pageable);
}
}
@Controller
@RequiredArgsConstructor
public class HomeController {
private final BoardService boardService;
@RequestMapping
public String home(Model model, @PageableDefault(size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) {
Page<Board> boards = boardService.findAll(pageable);
int startPage = Math.max(0, boards.getPageable().getPageNumber() - 4);
int endPage = Math.min(boards.getTotalPages(), boards.getPageable().getPageNumber() + 4);
model.addAttribute("boards", boards);
model.addAttribute("startPage", startPage);
model.addAttribute("endPage", endPage);
return "index";
}
}
Page<T>
변수는 total, content, pagagble을 가지고 있다. <nav aria-label="Page navigation example">
<ul class="pagination">
<li class="page-item" th:classappend="${1 == boards.pageable.pageNumber + 1} ? 'disabled' : '' ">
<a class="page-link" th:href="@{/(page=${boards.pageable.pageNumber - 1})}">Previous</a>
</li>
<li class="page-item" th:classappend="${i == boards.pageable.pageNumber + 1} ? 'active' : '' " th:each="i : ${#numbers.sequence(startPage, endPage)}">
<a class="page-link" th:href="@{/(page=${i - 1})}" th:text="${i}">1</a>
</li>
<li class="page-item" th:classappend="${boards.totalPages == boards.pageable.pageNumber + 1} ? 'disabled' : '' ">
<a class="page-link" th:href="@{/(page=${boards.pageable.pageNumber + 1})}">Next</a>
</li>
</ul>
</nav>
th:classappend="${1 == boards.pageable.pageNumber + 1} ? 'disabled' → 첫 번째 페이지일 때 Previous 링크 'disaled'
th:classappend="${boards.totalPages == boards.pageable.pageNumber + 1} ? 'disabled' → 마지막 페이지일 때 Previous 링크 'disaled'