参考了一些网上的例子,改写了一个适合自己的分页宏,freemarker代码如下:
<#-- ######分页器####### pageIndex:当前页码 totalpage:总页数 params:附加的额外参数 maxsteps:显示的页码个数 --> <#macro pager pageIndex totalpage params="" maxsteps=5> <#assign ipage=pageIndex?number/> <#if maxsteps lte 0> <#assign maxsteps=5/> </#if> <#assign offset = (maxsteps/2)?int /> <#-- 添加 url 附加参数--> <#assign requestParams =""/> <#if params?? && params !=""> <#assign requestParams ='&'+params/> </#if> <#--首页--> <#if ipage gt 1> <a href="?pageIndex=1${requestParams}" title="第一页"><<</a> <#else> <span class="disabled"><<</span> </#if> <#-- 前一页 --> <#if ipage gt 1> <a href="?pageIndex=${ipage-1}${requestParams}">前一页</a> <#else> <span class="disabled">前一页</span> </#if> <#--前一组--> <#if ipage gt maxsteps> <a href="?pageIndex=${ipage-maxsteps}${requestParams}" title="向前${maxsteps}页">...</a> <#else> <span style="display:none">...</span> </#if> <#--当前组中的页号--> <#if (ipage+offset) lt totalpage > <#if ipage lte maxsteps> <#assign pagelist = maxsteps/> <#else> <#assign pagelist = ipage+offset/> </#if> <#else> <#assign pagelist = totalpage/> </#if> <#if ipage gt 0 && ipage lte totalpage> <#if ipage gt 0 && ipage lte maxsteps> <#assign start=1/> <#else> <#assign start=ipage-offset/> </#if> <#list start..pagelist as num> <#if ipage !=num> <a href="?pageIndex=${num}${requestParams}">${num}</a> <#else> <strong>${num}</strong> </#if> </#list> </#if> <#-- 下一组 --> <#if totalpage-ipage gte maxsteps> <a href="?pageIndex=${ipage+maxsteps}${requestParams}" title="向后${maxsteps}页">...</a> <#else> <span style="display:none">...</span> </#if> <#-- 后一页 --> <#if ipage lt totalpage> <a href="?pageIndex=${ipage+1}${requestParams}">后一页</a> <#else> <span class="disabled">后一页</span> </#if> <#-- 尾页 --> <#if ipage lt totalpage> <a href="?pageIndex=${totalpage}&{requestParams}" title="最后一页">>></a> <#else> <span class="disabled">>></span> </#if> </#macro>