Controller:
@RequestMapping(value="/home", method=RequestMethod.GET)
public String getHomePage(Model model,
@RequestParam(value="page", defaultValue = "0") Integer pageIndex,
@RequestParam(value="pageSize", defaultValue = "10") Integer pageSize){
Sort sort = new Sort(Direction.ASC, "id");
Pageable pageable = new PageRequest(pageIndex, pageSize, sort);
Page<User> pageUser = userRepository.findAll(pageable);
model.addAttribute("users", pageUser.getContent());
model.addAttribute("pageIndex", pageable.getPageNumber());
model.addAttribute("pageSize", pageable.getPageSize());
model.addAttribute("isFirst", pageUser.isFirst());
model.addAttribute("isLast", pageUser.isLast());
model.addAttribute("hasPrevious", pageUser.hasPrevious());
model.addAttribute("hasNext", pageUser.hasNext());
model.addAttribute("totalPages", pageUser.getTotalPages());
return "home";
}
View page:
<nav>
<div class="ui pagination stackable menu pagination-centered">
<a th:class="'item ' + (${isFirst} ? 'disabled' : '')" href="#" th:href="@{/home(page=0)}">First</a>
<a th:class="'item ' + (${hasPrevious} ? '' : 'disabled')" href="#" th:href="@{/home(page=(${pageIndex}-1 lt 0 ? 0 : ${pageIndex-1}))}"> Previous </a>
<div class="item" th:text="${pageIndex+1}+'/'+${totalPages}">1</div>
<a th:class="'item ' + (${hasNext} ? '' : 'disabled')" href="#" th:href="@{/home(page=(${pageIndex+1} gt ${totalPages} ? ${totalPages} : ${pageIndex+1}))}"> Next </a>
<a th:class="'item '+ (${isLast} ? 'disabled' : '')" href="#" th:href="@{/home(page=${totalPages-1})}">Last</a>
</div>
</nav>
Result:
This is a simple method to implement a pagination function. Just using 'Pageable' and 'Page' of Spring, not need to integrate with other templates.
If you have any issues, please add a comment, thanks. Good luck!