




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、最近在學(xué)習(xí) Struts2,并使用 Struts2 開發(fā)系統(tǒng)。在網(wǎng)上看了好多的 struts2 的分頁,雖然都實現(xiàn)了分頁的功能,但是感覺不是非常好,需要我們在每次寫分頁的時候做很多的工作,而我認(rèn)為分頁應(yīng)該是一個通用的組件,開發(fā)人員在開發(fā)的過程中不應(yīng)該在分頁上花費太多的精力。所以,一直想封裝一個比較通用的分頁組件,而設(shè)計分頁組件的時候,怎樣保證動態(tài)查詢的參數(shù)不丟失,成為實現(xiàn)的一個難點。感謝 tangshuo 和 shim 的分享,讓我實現(xiàn)了這樣的一個分頁組件。該組件采用自定 struts2 標(biāo)簽的方式實現(xiàn)。首先建立一個構(gòu)建分頁標(biāo)簽信息的類:Pages.java/*構(gòu)建分頁標(biāo)簽體的類*author
2、Java 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計。*date2008-11-4 下午 02:52:19*version1.0*/publicclassPagesextendsComponentprivateHttpServletRequestrequest;privateStringpageNo;/當(dāng)前頁碼privateStringtotal;/總頁數(shù)privateStringstyleClass;/分頁的樣式privateStringtheme;/分頁的主題privateStringurl;/action 的路徑privateStringurlType;/路徑的類型,主要用
3、于 URL 重寫的擴(kuò)展/省略 get、set 方法publicPages(ValueStackarg0,HttpServletRequestrequest)super(arg0);this.request=request;Overridepublicbooleanend(Writerwriter,Stringbody)booleanresult=super.start(writer);try/從 ValueStack 中取出數(shù)值Objectobj=this.getStack().findValue(pageNo);pageNo=String.valueOf(Integer)obj);obj=t
4、his.getStack().findValue(total);total=String.valueOf(Integer)obj);StringBuilderstr=newStringBuilder();Mapcont=this.getStack().getContext();StrutsRequestWrapperreq=(StrutsRequestWrapper)cont.get(StrutsStatics.HTTP_REQUEST);if(url=null|.equals(url)url=(String)req.getAttribute(javax.servlet.forward.req
5、uest_uri);)StringpageNoStr=?pageNo=;if(dir.equals(urlType)/當(dāng) url 的類型為目錄類型時,比如http:/localhost:8090/yongtree/page/1pageNoStr=;if(1.equals(pageNo)/第一頁時if(url.lastIndexOf(/)!=url.length()-1)if(url.lastIndexOf(1)=url.length()-1)如果有頁碼 1,則去掉 1url=url.substring(0,url.length()-1);elseif(url.lastIndexOf(/)!=u
6、rl.length()-1)如果沒有頁碼 1,并且最后不是/時,加上/url=url+/;elseurl=url.substring(0,url.lastIndexOf(/)+1);/下面這段處理主要是用來處理動態(tài)查詢的參數(shù),并拼接成 urlStringBufferperUrl=newStringBuffer();if(this.getParameters().size()!=0)Iteratoriter=this.getParameters().keySet().iterator();while(iter.hasNext()Stringkey=(String)iter.next();Obje
7、cto=this.getParameters().get(key);perUrl.append(&).append(key).append(=).append(o);IntegercpageInt=Integer.valueOf(pageNo);str.append();elsestr.append();/文本樣式 if(theme=null|text.equals(theme)/當(dāng)前頁與總頁數(shù)相等if(pageNo.equals(total)/如果 total=1,則無需分頁,顯示“第 1 頁共 1 頁”if(1.equals(total)str.append(第+pageNo+頁)
8、;str.append(共+total+頁);else/到達(dá)最后一頁,顯示首頁上一頁末頁str.append(首頁);str.append(上頁);str.append(末頁);else/當(dāng)前頁與總頁數(shù)不相同if(1.equals(pageNo)/第一頁,顯示首頁下一頁末頁”str.append(首頁);str.append(下頁);str.append(末頁);else/不是第一頁,顯示首頁上一頁下一頁末頁”str.append(首頁);str.append(上頁);str.append(下頁);str.append(末頁);elseif(number.equals(theme)/數(shù)字式12
9、345678910IntegertotalInt=Integer.valueOf(total);/如果只有一頁,則無需分頁str.append();if(totalInt=1)str.append(1);elseif(cpageInt1)/當(dāng)前不是第一組,要顯示“/:返回前一組第一頁/:返回前一頁str.append(?);str.append(?);elsestr.append(?);intv=(cpageInt-4)0?(cpageInt-4):1;intv1=(cpageInt+4)totalInt?(cpageInt+4):totalInt;if(v1=totalInt)v=total
10、Int-10;v=(v=0?1:v);/如果為負(fù)數(shù),則修改為 1elseif(v=1&v110?10:totalInt;/10 個為一組顯示for(inti=v;i=v1;i+)if(cpageInt=i)/當(dāng)前頁要加粗顯示str.append(+i+);else/str.append(+i+);str.append(+i+);/如果多于 1 組并且不是最后一組,顯示“”if(cpageInt:返回下一組最后一頁/:返回下一頁str.append(?);str.append(?);elsestr.append(?);str.append();str.append();writer.wr
11、ite(str.toString();catch(IOExceptionex)ex.printStackTrace();returnresult;自定義分頁標(biāo)簽結(jié)構(gòu)的類:PageTag.java/*自定義分頁標(biāo)簽結(jié)構(gòu)或?qū)傩?authorJava 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計*date2008-11-4 下午 03:00:40*version1.0*/publicclassPageTagextendsComponentTagSupportprivateString pageNoprivateString total;privateString styleClasspr
12、ivateString theme;privateString url;privateString urlType;publicvoidsetUrlType(StringurlType)this.urlType=urlType;)publicvoidsetUrl(Stringurl)this.url=url;)publicvoidsetTheme(Stringtheme)this.theme=theme;)publicvoidsetStyleClass(StringstyleClass)this.styleClass=styleClass;)publicvoidsetPageNo(String
13、pageNo)this.pageNo=pageNo;)publicvoidsetTotal(Stringtotal)this.total=total;)OverridepublicComponentgetBean(ValueStackarg0,HttpServletRequestarg1,HttpServletResponsearg2)returnnewPages(arg0,arg1);)protectedvoidpopulateParams()super.populateParams();Pagespages=(Pages)component;pages.setPageNo(pageNo);
14、pages.setTotal(total);pages.setStyleClass(styleClass);pages.setTheme(theme);pages.setUrl(url);pages.setUrlType(urlType);)創(chuàng)建自定義標(biāo)簽的 tld 文件:1.01.2yt/yongtree-tagsJava 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計。的自定義標(biāo)簽pagescom.baiyyy.polabs.tag.PageTagjsp分頁標(biāo)簽pageNofalsetruetotalfalsetruestyleClassfalsetrue分頁標(biāo)簽的樣式,不配置此
15、項將采用默認(rèn)的樣式themefalsetrue分頁的主題,現(xiàn)支持 number|text 兩種主題urlfalsetrue分頁提交的路徑,默認(rèn)不用配置該項,自動獲取系統(tǒng)訪問路徑。urlTypefalsetrueurl 的類型,現(xiàn)在支持兩種 url 類型,第一種默認(rèn)的 url,這種情況不需要設(shè)置;第二種情況是目錄型的 url,比如 http:/ dir。此種情況不支持動態(tài)查詢,故標(biāo)簽體中不能加入?yún)?shù)這樣一個分頁標(biāo)簽就實現(xiàn)完了,下一步讓我們看看該怎樣使用吧。在頁面中引入自定義的標(biāo)簽庫:開始配置分頁標(biāo)簽信息:共頁第頁!一分頁的動態(tài)查詢參數(shù)需要全部注冊在這里 a這樣一個分頁組件就完成了,但是只是完成了
16、表現(xiàn)上的功能,我們還需要在后臺進(jìn)行封裝,我對它進(jìn)行了封裝,做了一個 PageAction.javapublicclassPageActionextendsBaseActionprivateIntegerpageNo=1;privateIntegereveryPage=10;privateIntegertotal;Pagepage=newPage();publicIntegergetPageNo()returnpageNo;publicvoidsetPageNo(IntegerpageNo)this.page.setCurrentPage(pageNo);this.pageNo=pageNo;publicIntegergetEveryPage()returneveryPage;pub
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國玻璃纖維濾紙市場全面調(diào)研及行業(yè)投資潛力預(yù)測報告
- 萃取設(shè)備項目風(fēng)險評估報告
- 2024中國摩托車零部件及配件制造行業(yè)分析報告
- 薄棉襪行業(yè)深度研究報告
- 銀川成立醫(yī)用硅膠制品生產(chǎn)加工公司可行性報告
- 2025年生物醫(yī)用陶瓷材料項目發(fā)展計劃
- 銳捷網(wǎng)絡(luò)實訓(xùn)室布線方案
- 半導(dǎo)體用靶材項目可行性報告
- 2025年公寓式酒店合作協(xié)議書
- 墊付運費合同范本
- 2024-2034年中國形體矯正鞋行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 項目保密工作實施方案
- 電競產(chǎn)業(yè)園方案
- 高甘油三酯血癥性急性胰腺炎診治急診專家共識2021解讀
- 雕版印刷術(shù)的發(fā)明《金剛經(jīng)》課件
- 精密測量課程中的思政案例弘揚工匠精神助力科技強國
- 殘疾人就業(yè)服務(wù)
- 傳統(tǒng)的中國紋樣與飾品設(shè)計
- 工業(yè)園區(qū)消防培訓(xùn)課件
- 供水管網(wǎng)項目背景
- 淺層高效氣浮池技術(shù)說明
評論
0/150
提交評論