
由于displayTag只處理數(shù)據(jù)的顯示,傳遞給他多少數(shù)據(jù),它會(huì)根據(jù)數(shù)據(jù)的記錄數(shù)及其
每頁(yè)顯示多少計(jì)算出需要的頁(yè)數(shù),
但是在處理大數(shù)據(jù)量集合的時(shí)候,會(huì)遇到問(wèn)題,就是將所有的數(shù)據(jù)傳遞給displayTag表格顯示標(biāo)簽
變得不現(xiàn)實(shí)也沒有必要,如何既能夠用到dispalyTag強(qiáng)大的顯示功能,用能夠很好的處理大數(shù)據(jù)量的
顯示和分頁(yè)功能呢?
基于以下幾點(diǎn)
1 盡量不要更改原displayTag標(biāo)簽的源代碼,該部分由原作者更改更為合適
2 盡量少的限制原有標(biāo)簽的功能
3 即插即用,非強(qiáng)迫性的.
4 和數(shù)據(jù)庫(kù)等數(shù)據(jù)源分離,做到無(wú)依賴
如何解決display?
既然不要更改原來(lái)的dispalyTag源碼,那么就自己做一個(gè)標(biāo)簽了,主要就是解決大數(shù)據(jù)量顯示和分頁(yè)功能
那就自己做一個(gè)分頁(yè)功能的標(biāo)簽,數(shù)據(jù)集合由用戶自己定義,標(biāo)簽只提供一些頁(yè)面的傳遞信息和
一些用戶用來(lái)部分提取數(shù)據(jù)的基本數(shù)據(jù)
本人又做了一個(gè)DisplayTagPro標(biāo)簽用于解決這樣的問(wèn)題,用法很簡(jiǎn)單,又可以用DisplayTag的強(qiáng)大的顯示功能
完全解決了以前我做的那個(gè)標(biāo)簽的局限性
上面那個(gè)圖片顯示的信息看到藍(lán)框中的信息是DispalyTag顯示的,下面的分頁(yè)功能是DisplayTagPro顯示的.
同時(shí)本標(biāo)簽針對(duì)經(jīng)常要根據(jù)顯示的信息進(jìn)行查詢,篩選等需求,增加了用戶自定義信息的功能,用戶可以在
PageInfo類中得到這些信息進(jìn)行對(duì)集合的進(jìn)一步處理,達(dá)到自定義查詢等其他要求.
》》》源代碼:
http://www.tkk7.com/Files/qixin000/displaytagpro.rar 該部分代碼已經(jīng)和displayTag沒有關(guān)系了,當(dāng)然如果和displaytag結(jié)合也沒有問(wèn)題
我發(fā)現(xiàn)displaytag有個(gè)問(wèn)題,就是在處理自由布局時(shí),在翻到第二頁(yè)是有問(wèn)題,不知大家遇到過(guò)沒有
所以最終我拋棄了displaytag標(biāo)簽,而用jstl及其el來(lái)做顯示,很好用用法:
可以在Demo中看到,可以一般的標(biāo)簽用法一樣:
修改web.xml ,工程中引入displaytagpro.jar
頁(yè)面上的用法:
<%@ taglib prefix="qixin" uri="qixin000" %>
<%
request.setAttribute("w_testId_name", "qixin");
request.setAttribute("w_testId_age", 10);
%>
<qixin:displaywrap uid="testId" name="test" pagesize="5" userclass="com.test.displaytag.DisplayTagTestHandle" />
處理類的定義:
該類用戶可以自定義,只需繼承抽象類AbstractHandler,實(shí)現(xiàn)Object getDisplayCollection(PageInfo pageInfo)方法即可,用戶可以從pageInfo中得到需要的信息,有很多
注意:本標(biāo)簽部分限制了DisplayTag標(biāo)簽的功能
1 一個(gè)頁(yè)面不能夠有兩個(gè)DisplayTag標(biāo)簽了,遺憾,但是我不經(jīng)常這樣做
解決辦法:可以通過(guò)frame來(lái)解決
2 DisplayTagPro標(biāo)簽的uid,name要和DisplayTag的uid,id,name相同,pagesize屬性也要相同
uid相同是為了計(jì)算d_\d+_[o|s|p]中間的數(shù)字用的
name相同,是為了形成的集合便于DisplayTag顯示
pagesize相同是為了不讓DisplayTag標(biāo)簽顯示自己的分頁(yè)功能
3 用戶自定義的信息必須是d_myid_w[0-9],例如(d_myid_w0,d_myid_w1)
定義之后可以在自定義的類中通過(guò)pageInfo.getAddinInfo()進(jìn)行提取,做進(jìn)一步的處理.
可以通過(guò)這個(gè)功能達(dá)到更復(fù)雜的處理.
4 userclass為用戶自定一個(gè)數(shù)據(jù)處理類,在這個(gè)完成數(shù)據(jù)的最終提取,在這里用戶可從pageInfo中
得到很多關(guān)于頁(yè)面上的信息,及其分頁(yè)信息
其他的限制倒不是很多!
由于這個(gè)標(biāo)簽比較簡(jiǎn)單,所以我就沒有寫更多的幫助文檔,很多可以根據(jù)命名和注釋即可了解!
注意:
本標(biāo)簽只支持jdk1.5以上,我用了foreach
jsp版本我倒是不知道,但是我在jboss4.2,tomcat5上測(cè)試通過(guò),版本沒看!