我想使用Spring PagingAndSortingRepository DAO找到Thymeleaf分页的完整解决方案。我得到了部分解决方案,但我无法获得最终解决方案。我认为对于其他人来说,作为代码snipet会很有趣,所以我会问整个事情。我在网上找不到一个对我来说很奇怪的解决方案(因为我觉得这可能是一个很常见的问题)。
最终的解决方案应该像Google的分页一样:只有在有意义的情况下才会使用两侧的箭头;最大10个数字(例如),它应该从1..10移动 - > 11..20等等,当你点击右箭头;当你点击10时移动到5..15。就像谷歌一样,你知道。大小控制着每个页面中的项目数,而不是分页栏中的块数或链接数。
我在Spring中有一个DAO存储库,它扩展了PagingAndSortingRepository ......
包music.bolo.domain.repository;
import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository;
导入music.bolo.domain.entity.Announcement;
@Repository public interface AnnouncementDao扩展 PagingAndSortingRepository {
公告findFirstByOrderByDateDesc(); }
所以我的服务可以发出请求,每个页面都会获得totalPageNumbers(http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html)......
private final static int PAGESIZE = 2;
.. .. @Autowired annotations ...
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; }
我的解决方案是局部的,它一直显示所有页面,没有箭头控制(实际上没用),没有任何其他功能,但它是我能够使其无任何错误的工作。
<div class="tag-box tag-box-v7 text-justify">
<!-- <h2>Pagination Centered</h2>-->
<div class="text-center">
<ul class="pagination">
<li><a href="#">«</a></li>
<!--<li>«</li>-->
<li th:each="i : ${#numbers.sequence( 1, page2th.TotalPages)}">
<a th:href="@{'/viewannouncements?p='}+${ i }" th:text="${ i }">1</a></li>
<!--<li>»</li>-->
<li><a href="#">»</a></li>
</ul>
</div>
</div>
答案 0 :(得分:3)
这是使用 SpringBoot 和 Thymeleaf 模板进行分页的示例,您可以尝试使用它。
/>
这是不言自明的
下面你可以找到GitHub repo的链接 -
https://github.com/karelp90/control_asp
答案 1 :(得分:0)
<Image Name="MapBorderSource" Canvas.Top="10" Canvas.Left="10" />