Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 分页Thymeleaf 3.0 Spring MVC_Spring Mvc_Pagination_Thymeleaf - Fatal编程技术网

Spring mvc 分页Thymeleaf 3.0 Spring MVC

Spring mvc 分页Thymeleaf 3.0 Spring MVC,spring-mvc,pagination,thymeleaf,Spring Mvc,Pagination,Thymeleaf,我想使用Spring Paging和SortingRepository DAO找到一个完整的Thymeleaf分页解决方案。我得到了一个部分解决方案,但我不能得到最后一个。我认为作为一个代码狙击手,这对其他人来说是很有趣的,所以我会要求所有的东西。我在网上找不到一个对我来说有点奇怪的解决方案(因为我认为这可能是一个很常见的问题) 最终的解决方案应该像谷歌的分页一样:只有在有意义的情况下,两边都有箭头;最大值为10个数字(例如),当单击右箭头时,它应该从1..10-->11..20移动,以此类推;

我想使用Spring Paging和SortingRepository DAO找到一个完整的Thymeleaf分页解决方案。我得到了一个部分解决方案,但我不能得到最后一个。我认为作为一个代码狙击手,这对其他人来说是很有趣的,所以我会要求所有的东西。我在网上找不到一个对我来说有点奇怪的解决方案(因为我认为这可能是一个很常见的问题)

最终的解决方案应该像谷歌的分页一样:只有在有意义的情况下,两边都有箭头;最大值为10个数字(例如),当单击右箭头时,它应该从1..10-->11..20移动,以此类推;当你点击10时,移动到5..15。就像谷歌一样,你知道。大小控制每页中的项目数,而不是分页栏中的块数或链接数

我在春季有一个DAO存储库,它扩展了分页和排序存储库

包music.bolo.domain.repository

导入org.springframework.data.repository.paging和sortingrepository; 导入org.springframework.stereotype.Repository

导入music.bolo.domain.entity.Announcement

@存储库公共接口AnnouncementDao扩展 分页和排序存储库{

公告findFirstByOrderByDateDesc();}

因此,我的服务可以发出请求,每个页面都将获得总页码()

私有最终静态int PAGESIZE=2

@自动连线批注

  public Page<Announcement> readAnnouncementPage (int pageNumber){
          PageRequest request = new PageRequest(pageNumber-1, PAGESIZE, Sort.Direction.DESC, "date");
          return announcementDao.findAll(request);    }
公共页面
  • 
    
    
    

    这是一个使用SpringBootThymeleaf模板分页的示例,您可以试试。
    这是不言自明的。
    下面是GitHub repo的链接-


    这是一个使用SpringBootThymeleaf模板分页的示例,您可以试试。
    这是不言自明的。
    下面是GitHub repo的链接-


    您是否尝试了使用Pageable的这种方法,或者您可以将其添加到视图数据表中,这些数据表支持很好的分页,并且易于实现感谢HitHam,我尝试了源代码,但我发现问题是它没有实现块。也就是说,如果您有100页的结果(5000个链接),那么您希望在10个块中显示它们(每个块中的结果大小为50个),并从一个块移动到另一个块,这是不考虑的。Hitham,我无法使用Github exmaple,但它看起来使用的是页面大小(每个页面中的项目数),而不是块大小(用于每个分页栏中的页数)。同样的问题。谢谢Cralfaro,但我想找到一个使用分页和排序对象的解决方案。您是否尝试过使用Pageable的这种方法,或者您可以将其添加到视图数据表中,这些数据表支持非常好的分页,并且易于实现。谢谢HitHam,我尝试了其中的代码,但我看到的问题是它没有实现the Blocks。也就是说,如果你有100页的结果(5000个链接),你想在10个块中显示它们(每个块中有50个结果),并从一个块移动到另一个块,这是不考虑的。Hitham,我无法使用Github exmaple,但它看起来使用了页面大小(每个页面中的项目数),但不是块大小(用于每个分页栏中的页数)。同样的问题。谢谢Cralfaro,但我想找到一个使用分页和排序对象的解决方案。如果您共享指向某个repo的链接,请确保您在那里只使用英语。这对每个人都是方便的。如果您共享指向某个repo的链接,请确保您在那里只使用英语。这将是一个方便每个人。
      @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">
        <div class="text-center">
            <ul class="pagination" th:with="elementsperpage=2, blocksize=10, pages=${page2th.Number}/${elementsperpage}, wholepages=${format.format(pages)},
    whole=(${page2th.Number}/${blocksize})+1, wholex=${format.format(whole)}, startnlockpage=${wholepages}*${blocksize+1}, endblockpage=${wholepages}*${blocksize+1}, 
    startpage=${wholex-1}*${blocksize}, endpage=(${wholex}*${blocksize})+1">
    
                <li>
                    <a th:if="${startpage gt 0}" th:href="@{${'/viewannouncements?p='}+${startpage}}">&lt;&lt;</a>
                    <a th:if="${startpage eq 0}" href="javascript:void(0);">&lt;&lt;</a>
                </li>
    
                <li th:each="pageNo : ${#numbers.sequence(endpage-11, (endpage lt page2th.TotalPages)? endpage-2 : page2th.TotalPages-1)}" 
                th:class="${page2th.Number eq pageNo}? 'active' : ''">
                        <a th:if="${page2th.Number eq pageNo}" href="javascript:void(0);">
                            <span th:text="${pageNo + 1}"></span>
                        </a>
                        <a th:if="${not (page2th.Number  eq pageNo)}" th:href="@{${'/viewannouncements?p='}+${pageNo+1}}">
                            <span th:text="${pageNo + 1}"></span>
                        </a>
                </li>
    
                <li>
                    <a th:if="${(endpage*elementsperpage) le (page2th.TotalElements)}" th:href="@{${'/viewannouncements?p='}+${endpage}}">&gt;&gt;</a>
                    <a th:if="${(endpage*elementsperpage) le (page2th.TotalElements)}" href="javascript:void(0);"></a>
                </li>
    
    
    
            </ul>
        </div>
    </div>