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