参考了一些网上的例子,改写了一个适合自己的分页宏,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>
本文介绍了一种使用Freemarker实现的自定义分页宏,该宏可以根据当前页码、总页数及显示的页码个数等参数生成带有前后页链接、页码导航等功能的分页组件。
253

被折叠的 条评论
为什么被折叠?



