由于displayTag只处理数据的显示,传递给他多少数据,它会根据数据的记录数及其
每页显示多少计算出需要的页数,
但是在处理大数据量集合的时候,会遇到问题,就是将所有的数据传递给displayTag表格显示标签
变得不现实也没有必要,如何既能够用到dispalyTag强大的显示功能,用能够很好的处理大数据量的
显示和分页功能呢?
基于以下几点
1 尽量不要更改原displayTag标签的源代码,该部分由原作者更改更为合适
2 尽量少的限制原有标签的功能
3 即插即用,非强迫性的.
4 和数据库等数据源分离,做到无依赖
如何解决display?
既然不要更改原来的dispalyTag源码,那么就自己做一个标签了,主要就是解决大数据量显示和分页功能
那就自己做一个分页功能的标签,数据集合由用户自己定义,标签只提供一些页面的传递信息和
一些用户用来部分提取数据的基本数据
本人又做了一个DisplayTagPro标签用于解决这样的问题,用法很简单,又可以用DisplayTag的强大的显示功能
完全解决了以前我做的那个标签的局限性
上面那个图片显示的信息看到蓝框中的信息是DispalyTag显示的,下面的分页功能是DisplayTagPro显示的.
同时本标签针对经常要根据显示的信息进行查询,筛选等需求,增加了用户自定义信息的功能,用户可以在
PageInfo类中得到这些信息进行对集合的进一步处理,达到自定义查询等其他要求.
》》》源代码:
http://www.blogjava.net/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上测试通过,版本没看!