pagertaglib分頁處理的使用_第1頁
pagertaglib分頁處理的使用_第2頁
pagertaglib分頁處理的使用_第3頁
免費預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、pager-taglib是java中一個用于分頁的小的框架。下面簡單介紹一下它 的具體使用。一、環(huán)境的搭建:將 pager-taglib-2.0.war 包拷貝到 Tomcat 的 webapps 下。啟動 Tomcat后會將其解壓成pager-taglib-2.0文件夾。從解壓文件中的lib目錄下拷貝pager-taglib.jar包到項目的lib下。 在JSP頁面中使用taglib指令引入pager-taglib標(biāo)簽庫。二、重要參數(shù)的說明:Offset :傳過來的值是偏移量,是選擇的頁面的頁數(shù)。比如你的記錄/頁pageSize=3,那么傳過來的offset應(yīng)該如下處理:offset/3+1

2、 這 樣得到的就是要生成的頁數(shù)!pg:pager設(shè)置分頁的總體參數(shù)url:分頁的鏈接根地址,pager標(biāo)簽會在這個鏈接的基礎(chǔ)上附加分 頁參數(shù),但不允許像給頁面跳轉(zhuǎn)的url那樣,在后面直接添加參數(shù),而 參數(shù)的傳遞時需要使用pg:param來指定。items:總記錄數(shù),pager標(biāo)簽正是根據(jù)這個值來計算分頁參數(shù),很 重要。maxPageltems:每頁顯示的行數(shù),默認(rèn)為 10maxindexPages:在循環(huán)輸出頁碼的時候,最大輸出多少個頁碼, 默認(rèn)是10pg:first第一頁的標(biāo)簽pg:pre 上一頁標(biāo)簽pg:next 下一頁標(biāo)簽pg:last最后一頁標(biāo)簽pg:pages 循環(huán)輸出頁碼信息對于上

3、面的標(biāo)簽都有類似的export變量:pageUrl -分頁鏈接URL地址(最重要的export參數(shù))pageNumber-頁碼firstItem 寸應(yīng)頁第一行的索引值lastitem -對應(yīng)頁最后一行的索引值三、項目中使用 pager-taglib :1、引入對應(yīng)的標(biāo)簽庫:html view pla in copy1.<span style ="font-size:18px"><%aglibprefix="pg" uri -'2.3.gs/navigation/pager"%>v% taglibprefix =&

4、quot;c" uri="%></span>2、使用標(biāo)簽布置頁面:| html view pla in copy1. <pg:pager url ="org.do" items ="$pm.total" export ="currentPageNumber=pageNumber" >2.2. <pg:paramname pg:paramname ="parentId" />4.3. <pg:first>6.4. <ahref ahref

5、 ="$pageUrl">首頁 </a>8.9.</pg:first>10.11.vpg:prev>12.13.vahref ahref ="$pageUrl ">前頁 </a>14.15.</pg:prev>16.17.<pg:pages>18.19.<c:choose>20.21.<c:whentest c:whentest ="$currentPageNumber eq pageNumber " >22.23.vfontcolo

6、r fontcolor ="red" >$pageNumber </font>24.25.</c:when>26.27.<c:otherwise>28.29.vahref ahref ="$pageUrl ">$pageNumber </a>30.31.</c:otherwise>32.33.</c:choose>34.35.</pg:pages>36.37.<pg:next>38.39.vahref ahref ="$pageUrl &

7、quot;>后頁 </a>40.41.</pg:next>42.43.vpg:last>44.45.vahref ahref ="$pageUrl ">尾頁 v/a>46.47.v/pg:last>48.49.v/pg:pager>需要注意的是:很多時候,在不同的頁面中跳轉(zhuǎn)的時候, 需要傳遞一個id,在保持這個數(shù)據(jù)的時候,不能直接跟在url后面,需要使用<pg:paramname二"parentld"/> 來傳遞。為了給當(dāng)前頁添加一些特殊的效果,使用curre ntPageNumbe

8、r給pageNumber 指定了一個別名,這是為了 test="$currentPageNumber eq pageNumber 判斷的需要。Items表示:返回來的總記錄數(shù),由此,該框架采用的是假分頁。url :指明了請求的入口地址,是與struts的配置文件struts-config.xml中的配置相關(guān)聯(lián)。3、設(shè)置offset禾口 pagesize 變量的值:比較好的做法是在系統(tǒng)變量類中,將其設(shè)置到ThreadLocal變量中這里將其圭寸裝到了 SystemContext類中:java view pla in copy1.<span style= "font-si

9、ze:18px">publicclass SystemContext 2.3.privatestatic ThreadLocal offset =new ThreadLocal();4.5.privatestatic ThreadLocal pagesize =new ThreadLocal();6.7.8.publicstaticint getOffset()9.10.Integeros = (Integer)offset.get();11.12.if (os= null )13.14.return。;15.16.returnos;3.2

10、7.58.59.publicstaticvoid setOffset( int offsetvalue)offset.set(offsetvalue);publicstaticvoid removeOffset()offset.remove();publicstaticint getPagesize()Integerps = (lnteger)pagesize.get();if (ps= null

11、)returnlnteger.MAX_VALUE;returnps;publicstaticvoid setPagesize( int pagesizevalue)pagesize.set(pagesizevalue);publicstaticvoid removePagesize()pagesize.remove();v/span>4、定義分頁過濾器PagerFilter :該過濾器調(diào)用 SystemContext類的方法,給offset和pagesize變量賦值java view pla in copy..5.16.17

12、.3.34.35.Filter <span style= "font-size:18px" >publicclass PagerFilterimplementsOverridepublicvoid destroy。Overridepublicvoid doFilter(ServletRequest request, ServletResponseresponse,FilterChain chain)throws IOException, ServletExceptionH

13、ttpServletRequest httpRequest = (HttpServletRequest)request;SystemContext.setOffset(getOffset(httpRequest);SystemContext.setPagesize(getPagesize(httpRequest);try chain.doFilter(request, response); finally /清空ThreadLocal 中的值SystemContext.removeOffset();SystemContext.removePagesize();9.40.41

14、.9.70.protectedint getOffset(HttpServletRequest request) int offset =0;try offset = lnteger.parselnt(request.getParameter( catch (NumberFormatException ignore) return offset;protectedint getPagesize(HttpServletRequest

15、request)return 10;Overridepublicvoid init(FilterConfig arg0)throwsv/span>"pager.offset" );ServletException offset = In teger.parsel nt(equest.getPaamete("page.offset");參數(shù)是固定的。中的..5.I..2.5、將過濾器配置到 web.xml文件中,使之生效:html view

16、pla in copyvfilter><filter-name> pagerFilter </filter-name></filter-class><filter-class> com.bjsxt.oa.web.PagerFilter</filter><filter-mapping><filter-name>pagerFilter </filter-name><url-pattern>/* </url-pattern></filter-mapping>6、定

17、義封裝不同實體類數(shù)據(jù)的分頁類PagerModel :該類使用List封裝了返回的不同實體類型。這里如果使用泛型,可以在編程的時候檢查類型及早給出提示,不使用也是可以的,根據(jù)個人的編程習(xí)慣吧。java view pla in copypublicclass PagerModel/* 總記錄數(shù)*/ privateinttotal;9./*當(dāng)前頁結(jié)果集*/private List da

18、tas;public List getDatas() returndatas;publicvoid setDatas(List datas) this .datas = datas;publicint getTotal() returntotal;publicvoid setTotal(int total) this .total = total;7、抽象分頁服務(wù)類AbstractMa nager在業(yè)務(wù)邏輯的實現(xiàn)類中,只是傳入的查詢語句和參數(shù)不同,所以,可以對這個變化的部分抽象。..1.22.2

19、8.39.40.java view pla in copypublicclass AbstractManagerextends HibernateDaoSupport /* 私有的給查詢語句賦值的方法* param query* param hql* param params*/publicvoid setParams(Query query,String hql,Object params)if (params!= null && params.length>0)for (int

20、i = 0;i<paramsength;i+) query.setParameter(i, paramsi);/*分頁公共方法開始*public PagerModel searchPaginated(String hql)return searchPaginated(hql, null ,SystemContext.getOffset(),SystemConte xt.getPagesize();return searchPaginated(hql, new Objectparam,SystemContext.getOffse t(),SystemContext.getPagesize(

21、);public PagerModel searchPaginated(String hql,Object params)return searchPaginated(hql,params,SystemContext.getOffset(),SystemCon text.getPagesize();public PagerModel searchPaginated(String hql,int offset, int pagesize)return searchPaginated(hql, null ,offset,pagesize);agesize)public PagerModel sea

22、rchPaginated(String hql,Object obj,int offset, int preturn searchPaginated(hql, new Objectobj,offset,pagesize);/*根據(jù)HQL語句進(jìn)行分頁查詢param hql HQL 語句param params HQL 語句帶的多個參數(shù)值param offset從第幾條記錄開始查詢7

23、.1.param pagesize每頁顯示多少行82.83.84.* return*/85.public PagerModel searchPaginated(String hql,Object params,int offset,intpagesize)00022.123.124./獲取記錄總數(shù)String countH

24、ql = getCountQuery(hql);Query query = getSession().createQuery(countHql);if (params != null && paramsength >0)for (int i= 0; i<params.length; i+) query.setParameter(i, paramsi);int total = (Long)query.uniqueResult().intValue();/獲取當(dāng)前頁的結(jié)果集query = getSession().createQuery(hql);if (params

25、!= null && paramsength >0)for (int i= 0; i<params.length; i+) query.setParameter(i, paramsi);query.setFirstResult(offset); query.setMaxResults(pagesize);67.168.List datas = query.list();PagerModel pm =new PagerModel();pm.setTotal(total);pm.setDatas(datas);return pm;/* 根據(jù)HQL語句,獲得查找總記錄數(shù)的HQL語句

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論