


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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標簽庫。二、重要參數(shù)的說明:Offset :傳過來的值是偏移量,是選擇的頁面的頁數(shù)。比如你的記錄/頁pageSize=3,那么傳過來的offset應(yīng)該如下處理:offset/3+1
2、 這 樣得到的就是要生成的頁數(shù)!pg:pager設(shè)置分頁的總體參數(shù)url:分頁的鏈接根地址,pager標簽會在這個鏈接的基礎(chǔ)上附加分 頁參數(shù),但不允許像給頁面跳轉(zhuǎn)的url那樣,在后面直接添加參數(shù),而 參數(shù)的傳遞時需要使用pg:param來指定。items:總記錄數(shù),pager標簽正是根據(jù)這個值來計算分頁參數(shù),很 重要。maxPageltems:每頁顯示的行數(shù),默認為 10maxindexPages:在循環(huán)輸出頁碼的時候,最大輸出多少個頁碼, 默認是10pg:first第一頁的標簽pg:pre 上一頁標簽pg:next 下一頁標簽pg:last最后一頁標簽pg:pages 循環(huán)輸出頁碼信息對于上
3、面的標簽都有類似的export變量:pageUrl -分頁鏈接URL地址(最重要的export參數(shù))pageNumber-頁碼firstItem 寸應(yīng)頁第一行的索引值lastitem -對應(yīng)頁最后一行的索引值三、項目中使用 pager-taglib :1、引入對應(yīng)的標簽庫: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、使用標簽布置頁面:| 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"/> 來傳遞。為了給當前頁添加一些特殊的效果,使用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ù)個人的編程習慣吧。java view pla in copypublicclass PagerModel/* 總記錄數(shù)*/ privateinttotal;9./*當前頁結(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語句進行分頁查詢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();/獲取當前頁的結(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國用藥依從性管理行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國生物硬腦膜修復(fù)行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國特藥配送行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國特殊和擠壓石墨行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 多元化創(chuàng)業(yè)培訓(xùn)與技能提升計劃
- 間冷塔培訓(xùn)課件
- 心理評估在課程設(shè)計中的重要性
- 教育投資在提升國民素質(zhì)中的作用評估
- 教育技術(shù)在教學管理中的價值與作用
- 教育科技對教育政策的推進作用
- 船廠安全用電培訓(xùn)課件
- 《2025年CSCO腎癌診療指南》解讀
- 人教版九年級化學上冊暑假銜接講義(初二升初三)
- 跆拳道館技術(shù)崗位薪酬制度
- 無人駕駛車法規(guī)-深度研究
- 《寧晉縣國土空間總體規(guī)劃(2021-2035年)》
- 2024年度乳腺癌篩查與早期診斷課件
- 2024年食品檢驗員(高級)職業(yè)鑒定理論考試題庫(含答案)
- 工廠物品回收合同模板
- JJF 1168-2024便攜式制動性能測試儀校準規(guī)范
- 經(jīng)橈動脈介入診療患者術(shù)肢并發(fā)癥預(yù)防及護理專家共識解讀
評論
0/150
提交評論