直接上代码:
<#macro p page totalpage params='' maxsteps=10>
<#assign ipage=page?number>
<#if maxsteps lte 0>
<#assign maxsteps=5>
</#if>
<#assign offset = (maxsteps/2)?int>
<#assign startpage = 1 >
<#-- url附加参数的判断 -->
<#assign requestParams = "">
<#if (params?? && params != '')>
<#assign requestParams = '&' + params>
</#if>
<div class="pagination text-center">
<ul class="pager">
<#-- 首页 -->
<#if ipage gt 1>
<li class="first"><a href="?page=1${requestParams}">首页</a></li>
<#else>
<li class="first disabled"><a>首页</a></li>
</#if>
<#-- 上一页 -->
<#if ipage gt 1>
<li class="previous"><a href="?page=${ipage - 1}${requestParams}">上一页</a></li>
<#else>
<li class="previous disabled"><a>上一页</a></li>
</#if>
<#-- 计算偏移量 -->
<#if (ipage gte maxsteps) >
<#assign startpage = (ipage - offset + 1) >
<#assign endpage = (ipage + offset) >
<#if (ipage+offset) gte totalpage >
<#assign endpage = totalpage >
<#assign startpage = (totalpage - maxsteps) >
</#if>
<#else>
<#if totalpage lte maxsteps >
<#assign endpage = totalpage >
<#else>
<#assign endpage = maxsteps >
</#if>
</#if>
<#if ipage gt 0 && ipage lte totalpage>
<#list startpage..endpage as num>
<#if ipage != num>
<li><a href="?page=${num}${requestParams}">${num}</a></li>
<#else>
<li class="active"><a>${num}</a></li>
</#if>
</#list>
</#if>
<#-- 下一页 -->
<#if ipage lt totalpage>
<li class="next"><a href="?page=${ipage + 1}${requestParams}">下一页</a></li>
<#else>
<li class="next disabled"><a>下一页</a></li>
</#if>
<#-- 尾页 -->
<#if ipage lt totalpage>
<li class="last"><a href="?page=${totalpage}${requestParams}">末页</a></li>
<#else>
<li class="last disabled"><a>末页</a></li>
</#if>
</#macro>
使用:
<#import "/ftl/pager.html" as pager><#-- 引入模板 -->
<#assign totalpage=(pagination.totalCount / pagination.pageSize)?ceiling><#-- 创建totalpage变量 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Pager</title>
</head>
<body>
<#list pagination.list as files>
<div class="col-xs-3">
<div class="card">
<img src="${filePath}" data-toggle="lightbox" data-group="image-group-1">
<div class="card-heading text-center"><strong>${fileName}</strong></div>
</div>
</div>
</#list>
<#if totalpage gt 1>
<@pager.p page=pagination.pageNo totalpage=totalpage />
</#if>
</body>
</html>