posts - 15,  comments - 34,  trackbacks - 27
          一簡介
          Pager-taglib,是一套分頁標簽庫,可以靈活地實現(xiàn)多種不同風格的分頁導航頁面,并且可以很好的與服務器分頁邏輯分離支持多種風格的分頁顯示。通過這些標簽的不同的組合,會形成多種不一樣的分頁頁面,風格各異,它自帶的DEMO就有七種左右的分頁風格,包括Google的分頁風格。而需要訂制自已的風格的分頁頁面也非常簡單。
          分頁方式有兩種:
          一種是從Action中得到一個List,在頁面上通過<pg:item>進行自動分頁。
          第二種是通過把 pageSize,pageNo兩參數(shù)傳給后臺進行數(shù)據(jù)庫分頁。

          本文只演示第二種數(shù)據(jù)庫分頁:普通form提交方式和對開源ajaxAnywhere的支持

          二、準備
          把pager-taglib.jar放到lib目錄下(僅此足亦,完全沒必要改web.xml什么的,還有官方war包中的東西都可以不要)

          <%@?taglib?uri="/WEB-INF/pager-taglib.tld"?prefix="pg"%>
          <%@?taglib?prefix="c"?uri="/WEB-INF/c.tld"%>



          三,form提交方式

          1.將公用的部分提出來單獨放在公共的jsp文件中pagination_tag.jsp

          <table?border=0?cellpadding=0?cellspacing=0?align=right>
          ????
          <tr?align=center?valign=top>
          ????????
          <pg:page?export="first,last">
          ????????????
          <td>
          ????????????????$
          {first}?-?${last}?of?${total}&nbsp;&nbsp;
          ????????????
          </td>
          ????????
          </pg:page>
          ????????
          <pg:first?export="pageUrl"?unless="current">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="${pageUrl}">?<b>[第一頁]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:first>
          ????????
          <pg:prev?export="pageUrl"?ifnull="${true?}">
          ????????????
          <td?align=right>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="${pageUrl}">?<b>[前一頁]&nbsp;</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:prev>
          ????????
          <pg:pages>
          ????????????
          <td?align=right>
          ????????????????
          <c:choose>
          ????????????????????
          <c:when?test="${pageNumber?==?currentPageNumber}">
          ????????????????????????
          <font?color=#A90A08>${pageNumber}&nbsp;</font>
          ????????????????????
          </c:when>
          ????????????????????
          <c:otherwise>
          ????????????????????????
          <A?HREF="${pageUrl}">${pageNumber}&nbsp;</A>
          ????????????????????
          </c:otherwise>
          ????????????????
          </c:choose>
          ????????????
          </td>
          ????????
          </pg:pages>
          ????????
          <pg:next?export="pageUrl"?ifnull="${true?}">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="${pageUrl}">?<b>[下一頁]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:next>
          ????????
          <pg:last?export="pageUrl"?unless="current">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="${pageUrl}">?<b>[最后頁]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:last>
          ????
          </tr>
          </table>

          2.使用方法
          <pg:pager?url="/CrmWeb/jsp/integrateAccept/custOrder.do"?items="${total}"?maxPageItems="${pageSize}"
          ?maxIndexPages
          ="${5}"?isOffset="${true}"?export="offset,currentPageNumber=pageNumber"
          ?scope
          ="request">
          ?
          <pg:param?name="method"?value="qryOrder"?/>
          <table>?????
          <c:forEach var="vo" items="${custOrders}">
          <tr>
          <td?>...</td>?
          </tr>
          </c:forEach>
          </table>??
          <pg:index>
          <jsp:include?page="pagination_tag.jsp"?flush="true"?/>
          ?
          </pg:index>
          </pg:pager>


          四.對ajaxAnywhere的分頁支持

          1.將公用的部分提出來單獨放在公共的jsp文件中pagination_tag_ajax.jsp

          <table?border=0?cellpadding=0?cellspacing=0?align=right>
          ????
          <tr?align=center?valign=top>
          ????????
          <pg:page?export="first,last">
          ????????????
          <td>
          ????????????????$
          {first}?-?${last}?of?${total}&nbsp;&nbsp;
          ????????????
          </td>
          ????????
          </pg:page>
          ????????
          <pg:first?export="pageUrl"?unless="current">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="#"?onClick="javascript:{${ajaxInvoke}('${pageUrl}');}">?<b>[μúò?ò3]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:first>
          ????????
          <pg:prev?export="pageUrl"?ifnull="${true?}">
          ????????????
          <td?align=right>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="#"?onClick="javascript:{${ajaxInvoke}('${pageUrl}');}">?<b>[?°ò?ò3]&nbsp;</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:prev>
          ????????
          <pg:pages>
          ????????????
          <td?align=right>
          ????????????????
          <c:choose>
          ????????????????????
          <c:when?test="${pageNumber?==?currentPageNumber}">
          ????????????????????????
          <font?color=#A90A08>${pageNumber}&nbsp;</font>
          ????????????????????
          </c:when>
          ????????????????????
          <c:otherwise>
          ????????????????????????
          <A?HREF="#"?onClick="javascript:{${ajaxInvoke}('${pageUrl}');}">${pageNumber}&nbsp;</A>
          ????????????????????
          </c:otherwise>
          ????????????????
          </c:choose>
          ????????????
          </td>
          ????????
          </pg:pages>
          ????????
          <pg:next?export="pageUrl"?ifnull="${true?}">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="#"?onClick="javascript:{${ajaxInvoke}('${pageUrl}');}">?<b>[??ò?ò3]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:next>
          ????????
          <pg:last?export="pageUrl"?unless="current">
          ????????????
          <td>
          ????????????????
          <c:if?test="${pageUrl!=null?}">
          ????????????????????
          <A?HREF="#"?onClick="javascript:{${ajaxInvoke}('${pageUrl}');}">?<b>[×?oóò3]</b>?</A>
          ????????????????
          </c:if>
          ????????????
          </td>
          ????????
          </pg:last>
          ????
          </tr>
          </table>

          2.使用方法

          <%@?taglib?prefix="aa"?uri="/WEB-INF/ajaxanywhere.tld"%>
          <script?src="<c:url?value="/js/aa.js"/>"></script>
          <c:set?var="ajaxInvoke"?scope="request">ajaxPaginationInvoke</c:set>
          <aa:zone?name="next_step">
          <pg:pager?url="/CrmWeb/jsp/integrateAccept/custOrder.do"?items="${total}"?maxPageItems="${pageSize}"
          ?maxIndexPages
          ="${5}"?isOffset="${true}"?export="offset,currentPageNumber=pageNumber"
          ?scope
          ="request">
          ?
          <pg:param?name="method"?value="qryOrder"?/>
          <table>?
          ??????......
          <c:forEach var="vo" items="${custOrders}">
          <tr>
          <td?>...</td>?
          </tr>
          </c:forEach>
          </table>??
          <pg:index>
          <jsp:include?page="pagination_tag_ajax.jsp"?flush="true"?/>
          ?
          </pg:index>
          </pg:pager>
          </aa:zone>
          <script>
          ajaxAnywhere.formName?
          =?"ajax_form";
          function?ajaxPaginationInvoke(url){
          ????document.frames['ajax_form'].action
          =url;
          ????ajaxAnywhere.submitAJAX();
          }

          ajaxAnywhere.onAfterResponseProcessing
          =?function?(){
          }

          <script>

          效果見下圖
          ?_pagination_ajaxanywhere.jpg

          五.標簽講解:從頁面里可以看到,這里使用了幾個標簽

          1、<pg:pager>,在這個標簽庫里就充當著一個領(lǐng)袖的作用,一切子標簽都在它里面工作。就以上出現(xiàn)的參數(shù)進行解釋一下:
          items:數(shù)據(jù)的紀錄數(shù)
          maxPageItems:顯示最多的紀錄數(shù)/頁
          maxIndexPages:顯示最多的分頁數(shù)/次,如設(shè)為5的話,則會出現(xiàn)這樣的情況 1 2 3 4 5 .或 3 4 5 6 7 這樣的形式,其實她自帶的DEMO都喜歡把頁數(shù)展現(xiàn)出來排成一排。
          isOffset:與pg:item配套使用
          export:這個屬性比較重要,文檔也對此作好相對長篇幅的說明。這個屬性是讓標簽給你暴露什么變量,當然這些變量是有選擇的,如在Pager標簽里,可以暴露出來的變量有pageOffset及pageNumber,即頁碼偏移量及頁碼。通過這兩個變量名,可以在Jsp或Java里面從Request里獲得。Export屬性接受的值還有表達式,如currentPage=pageNumber表示,把pageNumber的值暴露出來,并賦給一個叫CurrentPage的變量,這個變量將被保存到Request中,在Jsp或Java中可以得到。
          scope:咳。還需要講么?
          2、<pg:param>這個標簽很有用,用來設(shè)置將要加入到URL的參數(shù)。使用Name屬性指定即可。
          3、<pg:index>這個標簽說明分頁條顯示的內(nèi)容,在這里你可以設(shè)置各種風格的分頁顯示方式。
          4, <pg:prev> , <pg:pages>,<pg:next>這些標簽都是導航標簽顧名思義,你一看例子就明白了,我就不用講了吧。

          posted on 2007-02-05 22:05 jacky 閱讀(4940) 評論(6)  編輯  收藏

          FeedBack:
          # 有點暈了[未登錄]
          2007-12-12 18:05 | 小天
          我現(xiàn)在要做的是在當前頁面做以個模糊查詢,然后在把查出來的東西在這個頁面上顯示出來,我用的是struts來作的,我在action中已經(jīng)set list(也就是查到的所有東西) 和total(一共多少紀錄),可我在前臺jsp用你的方法弄出不來結(jié)果啊,<c:forEach var="vo" items="${custOrders}">這里的custOrders是List么 還是什么 ?  回復  更多評論
            
          # 有點暈了[未登錄]
          2007-12-12 18:09 | 小天
          能教教我么??我msn t281277005@live.jp  回復  更多評論
            
          # 有點暈了[未登錄]
          2007-12-12 18:14 | 小天
          url="/CrmWeb/jsp/integrateAccept/custOrder.do" 你的這個是干什么用的,我想作以個text 然后一點按鈕就到action中然后把東西用分頁顯示出來。。
          我剛學struts不久。  回復  更多評論
            
          # re: 分頁pager-taglib使用指南
          2007-12-25 01:10 | 路過
          @小天
          custOrders<List>

          url="/CrmWeb/jsp/integrateAccept/custOrder.do" 就是分頁的Action呀

          :)  回復  更多評論
            
          # 分頁pager-taglib使用指南[未登錄]
          2008-01-31 09:39 | 小天
          @路過
          謝謝;!!!  回復  更多評論
            
          # re: 分頁pager-taglib使用指南
          2008-04-17 17:05 | 王建
          您好 可以把 源代碼 發(fā)給我一份嗎?
          Email : wangjian3q@163.com  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(10)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          java

          搜索

          •  

          最新評論


          主站蜘蛛池模板: 南康市| 雷山县| 聊城市| 康马县| 浦县| 西盟| 旬邑县| 马龙县| 沙湾县| 马山县| 喜德县| 白银市| 元江| 江安县| 安丘市| 图片| 绥德县| 宝山区| 康定县| 淮安市| 阳信县| 扶风县| 阿尔山市| 平江县| 科技| 安新县| 临邑县| 金堂县| 曲靖市| 长顺县| 禄丰县| 巴楚县| 靖边县| 兴安县| 陆川县| 霍邱县| 福鼎市| 大石桥市| 河北省| 小金县| 绥化市|