Struts2自定義分標(biāo)簽_第1頁
Struts2自定義分標(biāo)簽_第2頁
Struts2自定義分標(biāo)簽_第3頁
Struts2自定義分標(biāo)簽_第4頁
Struts2自定義分標(biāo)簽_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論