FreeMarkerが書いたページングmacro(マクロ)テスト
3205 ワード
いくつかのネット上の例を参考にして、自分に適したページングマクロを書き換えました.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>