페이지 객체의 속성
| 항목 | 설명 |
|---|
| paging.isEmpty | 페이지 존재 여부 (게시물이 있으면 false, 없으면 true) |
| paging.totalElements | 전체 게시물 개수 |
| paging.totalPages | 전체 페이지 개수 |
| paging.size | 페이지당 보여줄 게시물 개수 |
| paging.number | 현재 페이지 번호 |
| paging.hasPrevious | 이전 페이지 존재 여부 |
| paging.hasNext | 다음 페이지 존재 여부 |
페이징 기능
| 페이징 기능 | 코드 |
|---|
| 이전 페이지가 없으면 비활성화 | th:classappend="${!paging.hasPrevious} ? 'disabled'" |
| 다음 페이지가 없으면 비활성화 | th:classappend="${!paging.hasNext} ? 'disabled'" |
| 이전 페이지 링크 | th:href="@{ |
| 다음 페이지 링크 | th:href="@{ |
| 페이지 리스트 루프 | th:each="page: ${#numbers.sequence(0, paging.totalPages-1)}" |
| 현재 페이지와 같으면 active 적용 | th:classappend="${page == paging.number} ? 'active'" |
페이지 리스트에서 페이지 표시를 제한함
th:if="${page >= paging.number-5 and page <= paging.number+5}"
현재 페이지 기준 좌우로 5개씩만 표시되게 함.
리스트 정렬
public Page<Question> getList(int page) {
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("createDate"));
Pageable pageable = PageRequest.of(page, 10, Sort.by(sorts));
return this.questionRepository.findAll(pageable);
}