Thymeleaf实现动态分页功能

第一次使用Thymeleaf着实踩了不少坑,试了好久才试出来的,记录一下

先上Thymeleaf代码

<div style="text-align: center;">
	<ul class="pagination">
		<li><a th:href="@{/listAdmin/}+${pageNum.get('currentPage')-1}">&laquo;</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}">&raquo;</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值的时候一直报空指针异常。
最终结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值