小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用FreeMarker的宏來實現(xiàn)Struts2的分頁顯示

 奧格柔克 2010-07-22
看到一些朋友在Struts2中,依然使用標簽來實現(xiàn)分頁顯示,而在基于Struts2的開發(fā)中,可能很多朋友會采用FreeMarker模板來渲染表示層,那么對于采用FreeMarker進行渲染的頁面來說,我在這里提出一種使用FreeMarker的宏來實現(xiàn)分頁顯示的作法,這種作法,我感覺更簡單靈活。
貌似在網(wǎng)上也沒找到類似的作法,所以,如果這種作法有什么隱患或性能問題,還請朋友們批評。

注:下面的代碼只是示例性質(zhì)的,難免有一些Bug或考慮不全之處存在,希望大家不必對代碼本身過多要求,更多的是看一下這種作法是否可取。

首先,看一下使用方法。
在需要進行分頁顯示的文件中,引入分頁顯示的ftl庫文件。
Xml代碼 復(fù)制代碼
  1. <#import "*/common/pager.ftl" as pager>  


在需要顯示分頁列表的位置,加入以下代碼,實現(xiàn)分頁顯示。
Java代碼 復(fù)制代碼
  1. <@pager.p page=page totalpage=totalPage />  


其中,“p”是宏的名字;“page=page”中的第一個page是宏的參數(shù),第二個page是來自Action對象中的屬性(帶有g(shù)et/set方法的成員變量),page屬性主要是標注當前要顯示的頁號,即第幾頁;同樣的,“totalpage=totalPage”也是類似的,totalpage屬性主要是告訴分頁宏,總頁數(shù)是多少。

經(jīng)過上面兩段代碼,再配合在Action中取得要顯示數(shù)據(jù)的總頁數(shù),就可以分頁了。

接下來,我們看一下分面效果截圖。




最后,我們看一下分頁效果的處理文件“pager.ftl”中宏“p”是如何定義的。
Xml代碼 復(fù)制代碼
  1. <#macro p page totalpage params='' maxsteps=6>  
  2.     <#assign ipage=page?number>  
  3.     <#if maxsteps <= 0>  
  4.         <#assign maxsteps=5>  
  5.     </#if>  
  6.     <#assign offset = ((ipage - 1) / maxsteps)?int>  
  7.     <#assign offsetLast = ((totalpage - 1) / maxsteps)?int>  
  8.        
  9.     <#-- url附加參數(shù)的判斷 -->  
  10.     <#assign requestParams = "">  
  11.     <#if (params?? && params != '')>  
  12.         <#assign requestParams = '&' + params>  
  13.     </#if>  
  14.        
  15.     <#-- 首頁 -->  
  16.     <#if ipage gt 1>  
  17.         <a href="?page=1${requestParams}"><<</a>  
  18.     <#else>  
  19.         <span class="disabled"><<</span>  
  20.     </#if>  
  21.     <#-- 前組-->  
  22.     <#if offset gt 0>  
  23.         <a href="?page=${offset * maxsteps}${requestParams}"></a>  
  24.     <#else>  
  25.         <span class="disabled"></span>  
  26.     </#if>  
  27.     <#-- 當前組中的頁號-->  
  28.     <#if (offset + 1) * maxsteps < totalpage>  
  29.         <#assign pagelist = (offset + 1) * maxsteps>  
  30.     <#else>  
  31.         <#assign pagelist = totalpage>  
  32.     </#if>  
  33.     <#if ipage gt 0 && ipage lte totalpage>  
  34.         <#list (offset * maxsteps + 1)..pagelist as num>  
  35.             <#if ipage != num>  
  36.                 <a href="?page=${num}${requestParams}">${num}</a>  
  37.             <#else>  
  38.                 <strong>${num}</strong>  
  39.             </#if>  
  40.         </#list>  
  41.     </#if>  
  42.     <#-- 下組 -->  
  43.     <#if offset lt offsetLast>  
  44.         <a href="?page=${(offset + 1) * maxsteps + 1}${requestParams}"></a>  
  45.     <#else>  
  46.         <span class="disabled"></span>  
  47.     </#if>  
  48.     <#-- 尾頁 -->  
  49.     <#if ipage lt totalpage>  
  50.         <a href="?page=${totalpage}${requestParams}">>></a>  
  51.     <#else>  
  52.         <span class="disabled">>></span>  
  53.     </#if>  
  54.     <#-- 前一頁 -->  
  55.     <#if ipage gt 1>  
  56.         <a href="?page=${ipage - 1}${requestParams}">前一頁</a>  
  57.     <#else>  
  58.         <span class="disabled">前一頁</span>  
  59.     </#if>  
  60.     <#-- 后一頁 -->  
  61.     <#if ipage lt totalpage>  
  62.         <a href="?page=${ipage + 1}${requestParams}">后一頁</a>  
  63.     <#else>  
  64.         <span class="disabled">后一頁</span>  
  65.     </#if>  
  66. </#macro>  


對另外兩個參數(shù)特別說明一下。
params:有時,我們分頁的內(nèi)容是通過查詢獲得的,或是分頁中還有其他參數(shù)時,可以作為附加的參數(shù)附在分頁URL后面。
maxsteps:目前的分頁效果類似于.net中DataView的默認分頁效果,默認當分頁數(shù)超過六頁時,最多顯示六個頁號。當然可以通過maxsteps參數(shù),調(diào)整分頁顯示時最多顯示的頁號數(shù)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多