Прежде всего, я думаю, что лучше использовать PagingAndSortingRepository вместо фильтрации в методе контроллера.
public interface VideoRepository extends PagingAndSortingRepository<Video, Integer>
{
Page<Video> findAllByCategory(String aInCategory, Pageable aInPageable);
}
Тогда используйте этот метод из определенного сервиса. Например.
@Override
public Page<Video> browseVideosByCategory(String aInCategory, int page, int size)
{
return videoRepository.findAllByCategory(aInCategory, PageRequest.of(page, size));
}
Для ошибки в вашем коде, убедитесь, что вы увеличиваете значение страницы. Не могли бы вы добавить аргументы контроллера и веб-страницу?
Например, страница может быть увеличена нажатием на номер страницы, который содержит ссылку на следующий контроллер.
@GetMapping("/getVideoByCategory/{category}")
public String getVideoByCategory(Model model, @PathVariable String category, @RequestParam(name = "page", defaultValue = "0") int page,
@RequestParam(name = "size", defaultValue = "4") int size) {
Page<Video> videos = videoService.browseVideosByCategory(category, page, size);
int[] pages = new int[videos.getTotalPages()];
model.addAttribute("pages", pages);
model.addAttribute("category", category);
model.addAttribute("videos", videos.getContent());
return "videoViewWithCategory";
}
Количество страниц, добавляемых в модуль.
Наконец, на странице html. Добавьте ссылку на номер страницы, содержащей информацию (номер страницы и Категория, которая является именем в вашем случае). В этом примере используется Thymeleaf.
<li th:each="p, status:${pages}">
<a th:href="@{/getVideoByCategory/{category}(category=${category},page = ${status.index} )}" th:text="${status.index}"></a>
</li>