Thymeleaf实现动态分页功能
第一次使用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值的时候一直报空指针异常。 最终结果:
上一篇:
IDEA上Java项目控制台中文乱码