




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、最近在學習 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 標簽的方式實現(xiàn)。首先建立一個構(gòu)建分頁標簽信息的類:Pages.java/*構(gòu)建分頁標簽體的類*author
2、Java 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計。*date2008-11-4 下午 02:52:19*version1.0*/publicclassPagesextendsComponentprivateHttpServletRequestrequest;privateStringpageNo;/當前頁碼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)/當 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)/當前頁與總頁數(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/當前頁與總頁數(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)/當前不是第一組,要顯示“/:返回前一組第一頁/:返回前一頁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)/當前頁要加粗顯示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;自定義分頁標簽結(jié)構(gòu)的類:PageTag.java/*自定義分頁標簽結(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)建自定義標簽的 tld 文件:1.01.2yt/yongtree-tagsJava 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計。的自定義標簽pagescom.baiyyy.polabs.tag.PageTagjsp分頁標簽pageNofalsetruetotalfalsetruestyleClassfalsetrue分頁標簽的樣式,不配置此
15、項將采用默認的樣式themefalsetrue分頁的主題,現(xiàn)支持 number|text 兩種主題urlfalsetrue分頁提交的路徑,默認不用配置該項,自動獲取系統(tǒng)訪問路徑。urlTypefalsetrueurl 的類型,現(xiàn)在支持兩種 url 類型,第一種默認的 url,這種情況不需要設(shè)置;第二種情況是目錄型的 url,比如 http:/ dir。此種情況不支持動態(tài)查詢,故標簽體中不能加入?yún)?shù)這樣一個分頁標簽就實現(xiàn)完了,下一步讓我們看看該怎樣使用吧。在頁面中引入自定義的標簽庫:開始配置分頁標簽信息:共頁第頁!一分頁的動態(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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 攝影器材品牌區(qū)域代理權(quán)合同
- 材料疲勞損傷累積分析模型合同
- 邊疆地區(qū)古代神話與服飾關(guān)系考古合同
- 保險業(yè)務(wù)流程重組合同
- 主題餐廳廚房承包及特色氛圍營造合同
- 拆遷工程后期維護承包合同
- 測量工作總結(jié)200字
- 光伏電站安全工作總結(jié)及計劃
- 美術(shù)6分鐘技能展示課件
- 防火安全重于泰山
- 游戲策劃師招聘筆試題與參考答案2025年
- 安全、環(huán)境、職業(yè)健康安全目標、指標及管理方案
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎(chǔ)理論
- 2024年檔案知識競賽考試題庫300題(含答案)
- 中國人民抗日戰(zhàn)爭勝利紀念日紀念暨世界反法西斯戰(zhàn)爭勝利課件
- 殯葬禮儀策劃方案
- 行政效能提升路徑研究
- (完整版)無菌醫(yī)療器械耗材生產(chǎn)企業(yè)體系文件-質(zhì)量手冊模板
- JBT 3300-2024 平衡重式叉車 整機試驗方法(正式版)
- 鉆井及井下作業(yè)井噴事故典型案例
評論
0/150
提交評論