【thymeleaf】分页代码

前言

  • thymeleaf 3.0.9.RELEASE
  • thymeleaf 模板方式调用
  • css需要替换

效果

这里写图片描述
这里写图片描述
这里写图片描述

调用分页模板

<div class="pager th:replace="base :: page_pager(1, -1, 12, @{/c})">
</div>
<div class="pager th:replace="base :: page_pager(${page.number+1}, -1, ${page.totalPages}, @{/c(id=${param.id})})">
</div>

模板部分代码

<!-- 
	number 页码。页码从1开始,如:1,2,3,4,5,...
	offset 页码偏移量。如果页码是从0开始,则偏移量为-1;如果页码从1开始,偏移量为0
	totalPages 分页后,页的总数量。
	url URL地址。形如:/c , /c?id=1, /c/b?id=1&limit=10。
	
	1,会自动向url中添加页码,如:/c?id=1&page=1, /c/b?id=1&limit=10&page=1
	2,当超过totalPages>maxButtons时,会显示...代替多余的按钮
	3,maxButtons>=floatButtons*2
	 -->
	<div class="pager layui-clear" th:fragment="page_pager(number, offset, totalPages, url)" th:with="maxButtons=10,floatButtons=5">
		<ul class="pagination">
			<!-- 上一页 -->
			<li th:if="${number == 1}"><span>上一页</span></li>
			<li th:if="${number > 1}"><a th:href="@{${url}(page=${number+offset-1})}">上一页</a></li>

			<!-- 首页 -->
			<li th:if="${number == 1}" class="active"><span>1</span></li>
			<li th:if="${number > 1}"><a th:href="@{${url}(page=${1+offset})}">1</a></li>
			
			<th:block th:if="${totalPages>2 && totalPages<=maxButtons}" th:each="i : ${#numbers.sequence(2,totalPages-1)}">
				<li th:if="${number == i}"  class="active"><span th:text="${i}">页码</span></li>
				<li th:if="${number != i}"><a th:href="@{${url}(page=${i+offset})}" th:text="${i}">页码</a></li>
			</th:block>
			
			<th:block th:if="${totalPages > maxButtons}">
				<th:block th:if="${(number-(floatButtons/2)) <= 2}" th:each="i : ${#numbers.sequence(2,2+floatButtons-1)}">
					<li th:if="${number == i}"  class="active"><span th:text="${i}">页码</span></li>
					<li th:if="${number != i}"><a th:href="@{${url}(page=${i+offset})}" th:text="${i}">页码</a></li>
				</th:block>
				<!-- ... -->
				<li th:if="${(number-(floatButtons/2))>2}"><span>...</span></li>
				
				<th:block th:if="${((number-(floatButtons/2))>2) && ((number+(floatButtons/2)-(floatButtons%2==0?1:0)) < (totalPages-1))}"
				          th:each="i : ${#numbers.sequence(number-(floatButtons/2),number+(floatButtons/2)-(floatButtons%2==0?1:0))}">
					<li th:if="${number == i}"  class="active"><span th:text="${i}">页码</span></li>
					<li th:if="${number != i}"><a th:href="@{${url}(page=${i+offset})}" th:text="${i}">页码</a></li>
				</th:block>
				
				<!-- ... -->
				<li th:if="${(number+(floatButtons/2)-(floatButtons%2==0?1:0)) < (totalPages-1)}"><span>...</span></li>
				<th:block th:if="${(number+(floatButtons/2)-(floatButtons%2==0?1:0)) >= (totalPages-1)}" th:each="i : ${#numbers.sequence(totalPages-floatButtons,totalPages-1)}">
					<li th:if="${number == i}"  class="active"><span th:text="${i}">页码</span></li>
					<li th:if="${number != i}"><a th:href="@{${url}(page=${i+offset})}" th:text="${i}">页码</a></li>
				</th:block>
			</th:block>
			
			<!-- 最后一页 -->
			<li th:if="${totalPages>1 && number == totalPages}" class="active"><span th:text="${totalPages}">页码</span></li>
			<li th:if="${totalPages>1 && number != totalPages}"><a th:href="@{${url}(page=${totalPages+offset})}" th:text="${totalPages}">页码</a></li>

			<!-- 下一页 -->
			<li th:if="${number >= totalPages}"><span>下一页</span></li>
			<li th:if="${number < totalPages}"><a th:href="@{${url}(page=${number+offset+1})}">下一页</a></li>
		</ul>
	</div>

参考

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

您可以参考以下代码,使用Thymeleaf进行分页查询的前端实现: ```html <!-- 分页查询表单 --> <form action="#" th:action="@{/search}" th:method="get"> <input type="text" name="keyword" placeholder="请输入关键词" required th:value="${keyword}"> <button type="submit">搜索</button> </form> <!-- 分页展示数据 --> <table> <thead> <tr> <th>ID</th> <th>名称</th> <th>类型</th> </tr> </thead> <tbody> <tr th:each="item : ${items}"> <td th:text="${item.id}"></td> <td th:text="${item.name}"></td> <td th:text="${item.type}"></td> </tr> </tbody> </table> <!-- 分页导航 --> <div class="pagination"> <ul> <li th:class="${page.number == 0} ? disabled"> <a th:if="${page.number != 0}" th:href="@{/search(keyword=${keyword},page=0)}">首页</a> <span th:if="${page.number == 0}">首页</span> </li> <li th:class="${page.number == 0} ? disabled"> <a th:if="${page.number != 0}" th:href="@{/search(keyword=${keyword},page=${page.number - 1})}">上一页</a> <span th:if="${page.number == 0}">上一页</span> </li> <li th:each="i : ${#numbers.sequence(0, page.totalPages - 1)}" th:class="${i == page.number} ? active"> <a th:if="${i != page.number}" th:href="@{/search(keyword=${keyword},page=${i})}" th:text="${i + 1}"></a> <span th:if="${i == page.number}" th:text="${i + 1}"></span> </li> <li th:class="${page.number == page.totalPages - 1} ? disabled"> <a th:if="${page.number != page.totalPages - 1}" th:href="@{/search(keyword=${keyword},page=${page.number + 1})}">下一页</a> <span th:if="${page.number == page.totalPages - 1}">下一页</span> </li> <li th:class="${page.number == page.totalPages - 1} ? disabled"> <a th:if="${page.number != page.totalPages - 1}" th:href="@{/search(keyword=${keyword},page=${page.totalPages - 1})}">末页</a> <span th:if="${page.number == page.totalPages - 1}">末页</span> </li> </ul> </div> ``` 在上面的代码中,我们首先定义了一个搜索表单,用户可以在表单中输入关键词进行搜索。接着,我们使用Thymeleaf的`th:each`指令遍历查询结果,并使用HTML表格进行展示。最后,我们使用Thymeleaf的`th:class`指令和Spring Data的`Page`对象属性来生成分页导航。 需要注意的是,上面的代码中使用了Spring Data提供的分页对象`Page`,该对象包含了当前页码、总页数、总记录数等属性,可以帮助我们实现分页导航。同时,我们还需要在后端实现相应的分页查询方法,将查询结果和分页对象传递给前端进行展示。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值