天天看點

FreeMarker自定義分頁标簽(仿javaeye)及使用示例

1. 先貼出分頁标簽pager.ftl的全部代碼:

----------------------------------------------------------------------------------------------------------------------

<#-- 自定義的分頁指令 (powered by qiujy)

    屬性:

   pageNo      目前頁号(int類型)

   pageSize    每頁要顯示的記錄數(int類型)

   toURL       點選分頁标簽時要跳轉到的目标URL(string類型)

   recordCount 總記錄數(int類型)

 -->

<#macro pager pageNo pageSize toURL recordCount> 

  <#-- 定義局部變量pageCount儲存總頁數 -->

  <#assign pageCount=((recordCount + pageSize - 1) / pageSize)?int> 

 <#if recordCount==0><#return/></#if>

<#-- 輸出分頁樣式 -->

<style type="text/css">

.pagination {padding: 5px;float:right;font-size:12px;}

.pagination a, .pagination a:link, .pagination a:visited {padding: 2px 5px;margin: 2px;border: 1px solid #aaaadd;text-decoration: none;color: #006699;}

.pagination a:hover, .pagination a:active {border: 1px solid #ff0000;color: #000;text-decoration: none;}

.pagination span.current {padding: 2px 5px;margin: 2px;border: 1px solid #ff0000;font-weight: bold;background-color: #ff0000;color: #FFF;}

.pagination span.disabled {padding: 2px 5px;margin: 2px;border: 1px solid #eee; color: #ddd;}

</style>

<#-- 頁号越界處理 -->

  <#if (pageNo > pageCount)>

    <#assign pageNo=pageCount>

  </#if>

  <#if (pageNo < 1)>

    <#assign pageNo=1>

  </#if>

<#-- 輸出分頁表單 -->

<div class="pagination">

<form method="post" action="" name="qPagerForm">

<#-- 把請求中的所有參數當作隐藏表單域(無法解決一個參數對應多個值的情況) -->

<#list RequestParameters?keys as key>

<#if (key!="pageNo" && RequestParameters[key]??)>

<input type="hidden" name="${key}" value="${RequestParameters[key]}"/>

</#if>

</#list>

<input type="hidden" name="pageNo" value="${pageNo}"/>

<#-- 上一頁處理 -->

  <#if (pageNo == 1)>

<span class="disabled">&laquo;&nbsp;上一頁</span>

  <#else>

<a href="javascript:turnOverPage(${pageNo - 1})" target="_blank" rel="external nofollow" >&laquo;&nbsp;上一頁</a>

  </#if>

<#-- 如果前面頁數過多,顯示... -->

 <#assign start=1>

 <#if (pageNo > 4)>

    <#assign start=(pageNo - 1)>

<a href="javascript:turnOverPage(1)" target="_blank" rel="external nofollow" >1</a>

<a href="javascript:turnOverPage(2)" target="_blank" rel="external nofollow" >2</a>&hellip;

 </#if>

<#-- 顯示目前頁号和它附近的頁号 -->

 <#assign end=(pageNo + 1)>

 <#if (end > pageCount)>

  <#assign end=pageCount>

 </#if>

  <#list start..end as i>

    <#if (pageNo==i)>

<span class="current">${i}</span>

  <#else>

<a href="javascript:turnOverPage(${i})" target="_blank" rel="external nofollow" >${i}</a>     

    </#if>

  </#list>

<#-- 如果後面頁數過多,顯示... -->

  <#if (end < pageCount - 2)>

&hellip; 

  </#if>

  <#if (end < pageCount - 1)>

<a href="javascript:turnOverPage(${pageCount - 1})" target="_blank" rel="external nofollow" >${pageCount-1}</a>

  </#if>

  <#if (end < pageCount)>

<a href="javascript:turnOverPage(${pageCount})" target="_blank" rel="external nofollow" >${pageCount}</a>

  </#if>

<#-- 下一頁處理 -->

  <#if (pageNo == pageCount)>

<span class="disabled">下一頁&nbsp;&raquo;</span>

  <#else>

<a href="javascript:turnOverPage(${pageNo + 1})" target="_blank" rel="external nofollow" >下一頁&nbsp;&raquo;</a>

  </#if>

</form>

<script language="javascript">

  function turnOverPage(no){

    var qForm=document.qPagerForm;

    if(no>${pageCount}){no=${pageCount};}

    if(no<1){no=1;}

    qForm.pageNo.value=no;

    qForm.action="${toURL}";

    qForm.submit();

  }

</script>

</div>

</#macro>

----------------------------------------------------------------------------------------------------------------------

2. 再貼出使用圖效:

  全部查詢:

FreeMarker自定義分頁标簽(仿javaeye)及使用示例

  根據名稱模糊搜尋:

FreeMarker自定義分頁标簽(仿javaeye)及使用示例

3. 對應的源代碼和使用示例,我已經上傳到CSDN的資源庫中了,對應連結為:http://download.csdn.net/source/1751655

繼續閱讀