分页Thymeleaf 3.0 Spring MVC

时间:2017-01-31 22:38:56

标签: spring-mvc pagination thymeleaf

我想使用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="#">&laquo;</a></li>
				<!--<li>&laquo;</li>-->
				<li th:each="i : ${#numbers.sequence( 1, page2th.TotalPages)}">
					<a th:href="@{'/viewannouncements?p='}+${ i }" th:text="${ i }">1</a></li>
				<!--<li>&raquo;</li>-->
				<li><a href="#">&raquo;</a></li>
			</ul>
		</div>
	</div>

2 个答案:

答案 0 :(得分:3)

这是使用 SpringBoot Thymeleaf 模板进行分页的示例,您可以尝试使用它。
/> 这是不言自明的 下面你可以找到GitHub repo的链接 -  https://github.com/karelp90/control_asp

see these screenshoots

see these screenshoots

答案 1 :(得分:0)

 <Image  Name="MapBorderSource" Canvas.Top="10" Canvas.Left="10" />