Я бы хотел найти полное решение для разбивки на страницы Thymeleaf с использованием Spring PagingAndSortingRepository DAO. У меня есть частичное решение, но я не могу получить последний. Я думаю, что это было бы интересно для всех остальных как код-снайпер, поэтому я попрошу все это. Я не мог найти решение в Интернете, которое для меня было странным (так как я думаю, что это может быть довольно распространенная проблема).Pagination Thymeleaf 3.0 Spring MVC
Окончательное решение должно вести себя как разбивка на страницы Google: со стрелками с обеих сторон, только если это имеет смысл; с максимальным количеством из 10 чисел (например), и он должен перейти от 1..10 -> 11..20 и т. д., когда вы нажимаете стрелку вправо; и переходите к 5..15, когда вы нажимаете 10. Так же, как google, вы знаете. Размер контролирует количество элементов на каждой странице, а не количество блоков или ссылок в панели разбиения на страницы.
У меня есть хранилище DAO в Spring, которая простирается PagingAndSortingRepository ...
пакет music.bolo.domain.repository;
import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository;
импорт музыки.bolo.domain.entity.Announcement;
@Repository общедоступный интерфейс AnnouncementDao расширяет PagingAndSortingRepository {
Объявление findFirstByOrderByDateDesc(); }
Так что моя служба может сделать запрос и каждая страница получит totalPageNumbers (http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html) ...
частного конечного статического ИНТ PAGESIZE = 2;
.. .. @Autowired аннотаций ...
public Page<Announcement> readAnnouncementPage (int pageNumber){ PageRequest request = new PageRequest(pageNumber-1, PAGESIZE, Sort.Direction.DESC, "date"); return announcementDao.findAll(request); }
Мой контроллер использует данные для отправки всей информации Thymeleaf
@RequestMapping(value = "/viewannouncements", method = RequestMethod.GET) ModelAndView viewAnnouncements(ModelAndView modelAndView, @RequestParam(name = "p", defaultValue = "1") int pageNumber) { Page<Announcement> page = announcementService.readAnnouncementPage(pageNumber); modelAndView.getModel().put("page2th", page); modelAndView.setViewName("viewannouncements"); return modelAndView; }
Моего решением является частичным , он показывает все страницы все время, без управления стрелкой (фактически бесполезно) и без какой-либо другой функциональности, но это самое лучшее, что я мог бы сделать ork без ошибок.
\t <div class="tag-box tag-box-v7 text-justify">
\t \t <!-- <h2>Pagination Centered</h2>-->
\t \t <div class="text-center">
\t \t \t <ul class="pagination">
\t \t \t \t <li><a href="#">«</a></li>
\t \t \t \t <!--<li>«</li>-->
\t \t \t \t <li th:each="i : ${#numbers.sequence(1, page2th.TotalPages)}">
\t \t \t \t \t <a th:href="@{'/viewannouncements?p='}+${ i }" th:text="${ i }">1</a></li>
\t \t \t \t <!--<li>»</li>-->
\t \t \t \t <li><a href="#">»</a></li>
\t \t \t </ul>
\t \t </div>
\t </div>
ли вы попробовать этот подход с выгружаемой https://github.com/mtiger2k/pageableSpringBootDataJPA или этого HTTP: // stackoverflow.com/a/23393348/643500 –
Вы можете добавить к вашему представлению данные Таблицы, которые хорошо поддерживают разбиение на страницы и легко реализуются – cralfaro
Спасибо HitHam, я пробовал код из http://stackoverflow.com/questions/18490820/spring- thymeleaf-хау в реализации-пагинацию-для-а-лист/23 393348 # 23393348, но проблема, которую я вижу, заключается в том, что она не реализует блоки. То есть, если у вас есть 100 страниц результатов (5000 ссылок), вы хотите показать их в 10 блоках (с размером 50 результатов в каждом блоке) и перейти от блока к блоку, что не рассматривается. – Mike