第一次使用Thymeleaf着实踩了不少坑,试了好久才试出来的,记录一下
先上Thymeleaf代码
<div style="text-align: center;">
<ul class="pagination">
<li><a th:href="@{/listAdmin/}+${pageNum.get('currentPage')-1}">«</a></li>
<li class="" th:classappend="${(pageNum.get('currentPage')==i ? 'active': '')}"
th:each="i:${#numbers.sequence(pageNum.get('startPage'),pageNum.get('endPage'))}"><a th:href="@{/listAdmin/}+${i}" th:text="${i}">1</a></li>
<li><a href="#" th:href="@{/listAdmin/}+${pageNum.get('currentPage')+1}">»</a></li>
</ul>
</div>
1 先用th:each把页码数取出来,从动态获取的开始页码到结束页码遍历,这里用到了 #numbers.sequence(num1,num2)这个函数
2 然后是超链接的拼接,用地址 + $ {参数}的方法进行参数的拼接,如参数需要进行运算,直接在${进行运算}
3 th:classappend配合三目运算可轻松修改class样式,起初我写了两个样式然后用if unless来选择,但一直没有效果,不知道为什么
处理动态页码的工具类
//一共多少页
private int totalPage;
//当前页码
private int currentPage;
//返回的页码数
private Map<String,Integer> pageNum = new HashMap<>();
public Map<String,Integer> PageTool(int page, int totalRecord, int size){
//计算总页数
totalPage = totalRecord/size;
if (totalRecord%size!=0){
totalPage = totalPage + 1;
}
if (page<1){
page = 1;
}
if (page>totalPage){
page = totalPage;
}
//处理完成的请求页码
currentPage = page;
//在这里计算页码的开始位置和结束位置
int startPage = 1;
int endPage = totalPage;
if (totalPage>10){
if (page>6){
startPage = page-5;
endPage = page+4;
if(endPage>totalPage){
endPage = totalPage;
}
}else {
endPage = 10;
}
}
pageNum.put("startPage",startPage);
pageNum.put("endPage",endPage);
pageNum.put("currentPage",currentPage);
return pageNum;
}
}
在这里我犯了一个低级错误浪费了很多时间,就是
private Map<String,Integer> pageNum
这句一开始我没有new HashMap<>();分配内存空间,导致往pageNum里面put值的时候一直报空指针异常。
最终结果: