




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、最近在學(xué)習(xí) Struts2,并使用 Struts2 開發(fā)系統(tǒng)。在網(wǎng)上看了好多的 struts2 的分頁,雖然都實現(xià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 重寫的擴展/省略 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/到達最后一頁,顯示首頁上一頁末頁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);/如果為負數(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、項將采用默認的樣式themefalsetrue分頁的主題,現(xiàn)支持 number|text 兩種主題urlfalsetrue分頁提交的路徑,默認不用配置該項,自動獲取系統(tǒng)訪問路徑。urlTypefalsetrueurl 的類型,現(xiàn)在支持兩種 url 類型,第一種默認的 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)上的功能,我們還需要在后臺進行封裝,我對它進行了封裝,做了一個 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高考語文第二輪專題復(fù)習(xí)強化訓(xùn)練:語言文字運用(附答案)二
- 中班健康遠離噪音
- 胎兒胼胝體超聲評估體系
- 教師學(xué)習(xí)培訓(xùn)結(jié)業(yè)學(xué)員匯報
- 右肩胛骨骨折護理查房
- 新人入職培訓(xùn)規(guī)章制度
- 護理班級總結(jié)
- 溝通協(xié)調(diào)能力培訓(xùn)
- 值日班長培訓(xùn)
- 子宮切除術(shù)后疼痛護理
- 2025年湖北高考真題化學(xué)試題(解析版)
- 2025-2030年中國停車場行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 林業(yè)碳匯項目開發(fā)流程與審核要點
- 安徽宣城職業(yè)技術(shù)學(xué)院招聘筆試真題2024
- 2025年人教版七年級下冊生物期末檢測試卷及答案
- 2024年貴州省貴陽市中考生物試題(含答案逐題解析)
- 廉潔應(yīng)征承諾書
- 醫(yī)院培訓(xùn)課件:《發(fā)熱伴血小板減少綜合征醫(yī)院感染防控》
- 兩臺37kW三相交流電動機的動力配電柜設(shè)計(共21頁)
- 積雪草提取物對胃粘膜的保護作用及其機制探討
- 手術(shù)室清潔消毒記錄表
評論
0/150
提交評論