当前位置: 首页 > 知识库问答 >
问题:

分页Thymeleaf 3.0 Spring MVC

符佐
2023-03-14

我想使用Spring PagingAndSortingRepository DAO找到一个完整的Thymeleaf分页解决方案。我得到了一个部分的解决方案,但我不能得到最后一个。我想这将是有趣的其他人作为代码片段,所以我将要求整个事情。我在网上找不到解决方案,这对我来说有点奇怪(因为我认为这可能是一个相当常见的问题)。

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

导入org.springframework.data.repository.PagingandSortingRepository;导入org.springframework.stereoType.repository;

导入music.bolo.domain.entity.announcement;

@Repository公共接口AnnouncementDao扩展PagingAndSortingRepository{

  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>

共有1个答案

晏炳
2023-03-14

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

 类似资料:
  • Django提供了一些类来帮助你管理分页的数据 -- 也就是说,数据被分在不同页面中,并带有“上一页/下一页”标签。这些类位于django/core/paginator.py中。 示例 向Paginator提供对象的列表,以及你想为每一页分配的元素数量,它就会为你提供访问每一页上对象的方法: >>> from django.core.paginator import Paginator >>> o

  • 当一次要在一个页面上显示很多数据时,通常需要将其分成几部分, 每个部分都包含一些数据列表并且一次只显示一部分。这些部分在网页上被称为分页。 Yii 使用 yii\data\Pagination 对象来代表分页方案的有关信息。特别地, total count 指定数据条目的总数。 注意,这个数字通常远远大于需要在一个页面上展示的数据条目。 page size 指定每页包含多少数据条目。 默认值为 2

  • 简介 在 Linux 内核启动过程中的第五部分,我们学到了内核在启动的最早阶段都做了哪些工作。接下来,在我们明白内核如何运行第一个 init 进程之前,内核初始化其他部分,比如加载 initrd ,初始化 lockdep ,以及许多许多其他的工作。 是的,那将有很多不同的事,但是还有更多更多更多关于内存的工作。 在我看来,一般而言,内存管理是 Linux 内核和系统编程最复杂的部分之一。这就是为什

  • 数据库查询时可以直接用 Db 的 paginate 方法 // 查询状态为1的用户数据 并且每页显示10条数据 $users = Db::name('user')->where('user_status',1)->paginate(15); // 把分页数据赋值给模板变量users $this->assign('users', $users); $this->assign('page', $use

  • 分页查询 数据库查询时可以直接用 Db 的 paginate 方法 // 查询状态为1的用户数据 并且每页显示10条数据 $users = Db::name('user')->where('user_status',1)->paginate(10); // 把分页数据赋值给模板变量users $this->assign('users', $users); $this->assign('page',

  • 完全支持MySQL、PostgreSQL和Oracle的分页查询,SQLServer由于分页查询较为复杂,仅部分支持。 分页性能 性能瓶颈 查询偏移量过大的分页会导致数据库获取数据性能低下,以MySQL为例: SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10 这句SQL会使得MySQL在无法利用索引的情况下跳过1000000条记录后,再获取1

  • 分页实现 ThinkPHP5.1内置了分页实现,要给数据添加分页输出功能变得非常简单,可以直接在Db类查询的时候调用paginate方法: // 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->paginate(10); // 把分页数据赋值给模板变量list $this->assign('list', $l

  • 回顾 在前面的章节(关注者,联系人和好友),我们已经完成了所有支持 “关注者” 功能的数据库的修改。今天我们将会让我们应用程序接受用户的真实数据。我们将要告别伪造数据的时候! 我们接下来讲述的正是我们上一章离开的地方,所以你可能要确保应用程序 microblog 正确地安装和工作。 提交博客文章 让我们先以简单的内容开始,主页应该有一个提交新的 blog 的表单。 首先我们定义一个单字段的表单对象