大明白的天地

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 3 文章 :: 58 评论 :: 0 Trackbacks
displaytagpro.jpg
由于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上测试通过,版本没看!
posted on 2005-07-26 13:45 大明白 阅读(8195) 评论(48)  编辑  收藏

评论

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-07-26 15:52 emu
原来也想过做相同的东西,但是关键问题没有想通。其实displaytag的开发者倒也未必没想过这个问题,但是可能要找一个漂亮简单通用的解决方案真的不大容易吧。

如果一次不把全部数据交给displaytag去分页,那么在翻页的时候就要重新进行查询,那么displaytag就不得不和数据访问部分绑定,这样标签就没有办法通用化了。

我很有兴趣的是大明白的displaytagpro怎么解决翻页的时候重新查询呢?

就是demo里面的displaytagpro.jar文件对吗?怎么不提供原码?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-07-26 16:42 大明白
实际上要解决这样的问题,大家应该想法都差不多
为什么DisplayTag没有实现很好的分页,并不是他不能够实现,因为这和他做的显示工作无关,他只是负责把需要的数据显示出来,而且做得很好。
开发DisplayTag标签的人,应该想的是让我们应用他很好的处理显示,灵活的定义显示的功能,而且这点他做到了,而且很好用

处理大数据量问题是,实际上就是如何提取部分信息,给DispalyTag显示,但是又得让它正确处理分页,这点DisplayTag做不到,因为这也不是他的职责

我的基本思路是这样的:
因为DisplayTag计算分页也是根据实际的记录数计算的,而我们传递的是部分数据,所以DT计算不正确,必须给他看到好像是全部数据,他才能分页得很好,如果他做不到,我们就在传递部分数据的同时,在传递一个总数不就可以正确计算分页了.
那就给他一个虚的总数呗;
我们自己用这个虚的总数来计算该分多少页,我们自己做这个分页功能
而让DisplayTag来显示不就行了吗,每次都经过我们自定一个处理类来完成信息的提取数据给它显示。

所以这里没有什么技术难度,只是一个思路的问题,开始我倒是想改DisplayTag的源代码了,但是他复杂,怕给改坏了,而且不易于升级版本,所以就作了一个标签,来由用户产生数据给DT显示,而分页有我的DTP来显示;现在得到了很好的应用!

关键这里的一个我认为好的扩展是:可以自定义一些信息来处理筛选信息用的AddinInfo,达到了复杂查询等的目的。  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-07-29 16:57 lyjjq
首先肯定,大明白 的想法慢好的,也付出了一些努力,但你的东西放在我的机器上怎么报错呢?javax.servlet.ServletException: com/qixin/taglib/displaytagpro/DisplayWrapTag (Unsupported major.minor version 49.0)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
能帮我解释一下吗,顺便说一下你的控件能不能继续改造成这钟模式,可能有一定工作量,输入四个参数:Collection,pagesize,rowsize,style,解释一下:Collection是要显示的结果集,pageSize是页面显示的数量,rowsize是每行显示的列数,style是显示的风格!
谢谢了,这段时间忙,有控多交流  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-07-29 17:14 大明白
改起来倒是很简单,因为这个标签本来就没多东西,代码也很简单
但是请注意:
这个标签是在jdk1.5上开发的,检查一下你的是不是1.5
运行环境jboss,tomcat5;其他的我没有测试过,应该不会出问题,这个标签没有用到什么特别的技术

另外你提的修改方案都已经有了,实际上是重复的
Collection要显示的结果及实际上就是这里的name,他把生成结果集命名为你定义的name,可以在你定义的scope范围内找到这个集合
pagesize已经有了,这个不说
rowsize,我的这个标签中形成的结果集的对象的属性个数;
style:我是充分利用了DisplayTag的显示功能,所以我自己的标签只有一个class,是固定的叫
span.pagelinkspro {
background-color: #eee;
border: 1px dotted #999;
padding: 2px 4px 2px 4px;
width: 79%;
display:block;
border-top: none;
margin-bottom: -5px;
}
其他的全部是DispalyTag的,他怎么定义就怎么用,所以也没有必要取其一个style,因为就一个pagelinkspro,固定的,就是定义下面分页栏风格的

不好意思,给你的全否了  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 09:50 yingyi
我要从数据库里边调数据怎么用呀!
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 11:59 大明白
这里有个例子你可以看一看:
http://www.blogjava.net/Files/qixin000/1.1.rar
里有四个文件,但是没有给出完整的例子,如何使用看这里
http://www.blogjava.net/qixin000/articles/8474.html
其中一个就是演示如何从数据库中提取部分数据,主义这个只是演示,至于你在哪里进行数据库连接,那里传递数据,根据你的需要定:
CustomerHandler.java
这个给出了一个如何从数据库中提取部分数据的例子.返回给页面

如果你想快速开发而不太在乎结构是否合理,可以采用qixin000tag我写的一个标签,就是把数据访问也放到了标签里,所以各不用你去管如何提取数据,只需配置好配置文件即可.
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 12:06 大明白
出于演示目的,切勿模仿,否则让人给批了,后果自负! : )

package com.qixin.taglib.displaytagpro.test;

import com.qixin.taglib.displaytagpro.PageInfo;
import com.qixin.taglib.displaytagpro.handle.AbstractHandler;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
* Created by qixin.
* User: qixin
* Date: 2005-7-25
* Time: 18:54:17
*/
public class CustomerHandler extends AbstractHandler {
protected Object getDisplayCollection(PageInfo pageInfo) {
// TestList list = new TestList(143, false);
// pageInfo.setMaxCount(143);
// List subList = list.subList(pageInfo.getStart() - 1, pageInfo.getEnd() > list.size() ? list.size() : pageInfo.getEnd());
// return subList;

List list = new ArrayList();
try {
/**
* 数据库部分可以进一步封装,可以不在这里写,这里只是演示如何提取部分数据
*/
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://192.168.0.177:1433;DatabaseName=paper";
Connection conn = DriverManager.getConnection(url, "sa", "");
Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery("select ID,编号,存货人 from 入库单");
rs.last();
int maxCount = rs.getRow();
pageInfo.setMaxCount(maxCount);
rs.beforeFirst();
int begin = pageInfo.getStart() - 1;
if (begin > 1) rs.absolute(begin);
int i = 0;
while (rs.next() && i < pageInfo.getPageSize()) {
CustomerBean bean = new CustomerBean();
bean.setId(rs.getString("id"));
bean.setNo(rs.getString("编号"));
bean.setPerson(rs.getString("存货人"));
list.add(bean);
i++;
}
return list;
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
}


其中:
这里有很重要的两句:
1,就是根据
pageInf.getStart(), pageInfo.getEnd()获得要提取的数据范围

2,就是要设置
pageInfo.setMaxCount(int); 设置要分页的总记录数,这个可以是一个虚拟的,你想设置多少都行,但是最好和你的集合的记录数相同,否则,分页到最后,如果你的处理类没有处理好数据的提取,会出错的!

还有如果泥提取数据不仅仅是根据这个来的,还有你页面定制的自定义信息,那么可以通过pageInfo.getAddinInfo()来获得一个Map来供自己进一步处理数据之用,可以达到更好的效果.  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 15:02 lyjjq
看了你的回复我很高兴,很高兴的告诉你,礼拜六开始学习自定义标签,我把你的自定标签修正了一下,同时把displaytag重构了!看看我的显示结果:
我怎么上传文件或者图片呢?
实际上我的目的是在每一个可以显示任意多的元素!
这个是我的测试代码
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib prefix="display" uri="displaytag"%>
<%@ taglib prefix="linktone" uri="linktonetag"%>
<%@ page
import="com.lee.orderdish.util.ParamUtils,org.displaytag.sample.*,java.util.*,org.displaytag.tags.TableTag,com.linktone.taglib.displaytagpage.PageInfo"%>
<html>
<head>
<title>display tag 分页测试</title>
<link rel="stylesheet" href="css/screen.css" type="text/css" />
</head>

<body>
<%int currentPage = ParamUtils.getIntParameter(request,
"currentPage", 1);
TestList list = new TestList(100, false);
PageInfo pageInfo = new PageInfo();
pageInfo.setMaxCount(100);
pageInfo.setPageSize(6);
pageInfo.setCurrentPage(currentPage);
int startindex = pageInfo.getStart() - 1;
int endindex = pageInfo.getEnd() <= list.size() ? pageInfo.getEnd()
: list.size();
out.println("startIndex:" + startindex);
out.println("endIndex:" + endindex);
java.util.List subList = list.subList(startindex, endindex);

request.setAttribute("test1", subList);

%>

<linktone:displaywrap uid="aas" name="test" pagesize="6" maxsize="24"
requestURI="index.jsp" append="age=psg&type=1">
<display:table uid="aa" name="test1" align="center" pagesize="6" rowsize="4"
requestURI="jiang.do" class="ITS">
<table>
<tr>
<td><a href="javascript:">jiang{id}</a></td>
</tr>
<tr>
<td>{name}</td>
</tr>

</table>
</display:table>
</linktone:displaywrap>
</body>
</html>

我在displaytag标签加了rowsize,display标签的body作为一个元素的内容显示,里面有{attribute}代表了某个属性值!这样显示的东西完全符合我的要求了!你的代码我看过了,写的不错!在导航条的地方前面最好加个<div align="center">让你的分页居中吧,这样好看点!还既然有了你的导航条,就要把dispaly的导航条去掉,这个我都作到了!再次感谢你激发了我的创造激情!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 15:23 lyjjq
这里提交东西不是太方便:我把上面内容放在我的个人空间里了:
http://spaces.msn.com/members/jiangjianqiang/
到那里可以看到图形显示!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 16:21 keith
希望楼主能提供DispalyTagPro的src出来。期待  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-01 17:03 剑客
是啊,让大家一起想办法更好地解决这个问题。
displaytag这么慷慨的就开源了,楼主发扬精神啊。
我只想看看你的源码,谢谢  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 09:57 大明白
自觉的还有不好的地方所以一直没有拿出来,如果大家需要,现在奉上:
http://www.blogjava.net/Files/qixin000/displaytagpro.rar  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 10:23 大明白
可能是我理解错误,现在说几点你的用法,如果理解错误,见谅:
//dispalytagpro==dtp
//displaytag == dt
你把dt的属性requestURI放到了dtp上,那dt的排序等功能好象就不好使了,你就的自己处理了,传递的信息也会错误,或者根本没有传递过来,或者传递过来了,会丢失一些QueryString信息,所以不推荐改这里,所以我坐的那个标签是比较充分考虑利用dt的所有功能的前提下来做的这个标签,如果你修改了dt,那以后,dt作者增加了功能,你不由得改dt,多麻烦,而且dt有很多隐含的功能,等待去发掘,dtp只是提供数据而已,所以尽量在挖掘dt的功能基础上来改善dtp功能,我觉得更好
还有就是append属性,这个可能你没有发现,我里面有一个提取QueryString除了d -\d+-[s|o|p]字符串以外的其他传递信息给PageInfo.AddinInfo属性,你从哪里可以获得到你设置的 request.parameter,attribute值,所以这里有点多余,不信你试一试在request里设置一个attribute,然后翻一下页你就会看到 ,查询字符串多了一项,而且你也可以从后台pageInfo.getAddinInfo()中或得到这些信息

还有就是一个居中的问题,你可以调整样式单,而不用该代码,我觉得居中有个问题就是,当你点那些直接跳转的1,23,4,5时,会出现两面同时动的情况,因为他们有时是一位数字,有时是两位数字,会出现同时左右伸缩问题,很难受,左对齐有个好处就是,一侧缩放! 所以说各司其责,dt显示,dtp提供数据,如果你想在一行显示任意多的数据,你可以细细的查一查dt的功能里有没有,我想很多功能你么没有发现,dt很强的,比如那个自由格式的显示,见我的另一篇随笔,那就是我不知道dt有没有这个能力的前提下,仔细想的,结果实现了,所以不要重复做工作。 现在dt做的工作,已经实现了大部分.net里datagrid的功能,很不错, 所以在java里显示数据,我现在不愁了,完全用这两个标签实现一个现在一个典型论坛的显示,很强,但是我做一个样例给大家看看 不好意思,又给提意见了, lyjjq  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 10:29 keith
DispalyTag这项目好像停了吧,怎么到现在一点动静也没有了。怀疑!!
如果真停了,希望有人能接手继续开发维护,但不希望用来谋利  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 10:36 大明白
to lyjjq
如果你想把所有数据显示在一行或者你想灵活控制
你的dt用法错误
你应该dispaly:table中加一个display:column软后在其中提取数据循环,而不是像你这样在display:table加了一个<table>
上传图片及其现实的问题都是dt的事,都可以实现,自己发现吧!

去掉displaytag的分页栏,请修改样式单将其变为hidden即可  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 11:40 lyjjq
这是我用dt 显示数据的例子, 如果在<display:column 中在加数据循环可能会让程序复杂!用户不易使用,!也也许能实现一行多数据,但,dt给的例子中好像做不到!我认为<display:table>xxxx</display:table> XXX部分的操作都是对当前数据行的操作,而不能在XXX部分对多行操作,所以被迫无奈我修改了dt的输出机制!,以便符合我的输出要球,你的displaytag的理解比我要深,能否提供怎么写?
<display:table name="test" class="its" width="500" id="currentRowObject">
<display:column title="选中" align="center" >
<html:multibox name="GroupForm" property="ids" onclick="CCA(document.GroupForm);" value="<bean:write name ="currentRowObject" property="id"/>"></html:multibox>
</display:column>
<display:column property="id" align="center" title="编号" />
<display:column property="groupName" align="center" title="组名" />
<display:column title="成员" align="center" >
<a href="<%=request.getContextPath()%>/contact/privatecontactmenlist.jsp?groupid=<bean:write name ="currentRowObject" property="id"/>">成员</a>
</display:column>
<display:column title="添加/删除成员" align="center" >
<a href="javascript:MM_openBrWindow('<%=request.getContextPath()%>/contact/modgroup.jsp?groupid=<bean:write name ="currentRowObject" property="id"/>','','height=550,width=520,top=0,left=100');">添加删除成员</a>

</display:column>
<display:column property="groupDesc" align="center" title="组描述"/>
</display:table>

1.yi这个css能控制居中吗?,我加了align="center"好像没用,页面控制我很差的特别是css

span.pagelinks {
background-color: #eee;
border: 1px dotted #999;
padding: 2px 4px 2px 4px;
width: 80%;
display:block;
border-top: none;
margin-bottom: -5px;
}

3.至于更改uri名字的事情,没办法,我这是为公司同事开发的,写谁都不合适,只有用公司的了,况且我也实现了很多输出功能呀!


4.刚用了几天displaytag,理解的不深,多多指导!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 14:27 大明白
to lyjjq
span.pagebanner {
margin-top: 0px;
margin-bottom: 0px;
visibility: hidden; //这里隐藏了
}

span.pagelinks {
margin-top: 0px;
margin-bottom: 0px;
visibility: hidden; //这里隐藏了
}
//这个是我的标签的分页栏样式单:
span.pagelinkspro {
background-color: #eee;
border: 1px dotted #999;
padding: 2px 4px 2px 4px;
width: 79%;
display:block;
border-top: none;
margin-bottom: -5px;
display:block;
direction:rtl; //这里可以设置左右显示,但是不能设置居中,遗憾
}

个人意见,不推荐更改dt标签!


如果你要实现一行显示多个,如果dt页面控制不了的话,那你就更该输出的Collection,它支持很多集合类,你可以在输出的集合中进行设计,应该可以实现的,我没有试过!
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-02 17:27 apple
哪些部分用了1.5的语法?
我的服务器是基于1.4的,估计用不起来,所以想改动一下你的源码。  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-03 10:28 大明白
你编译一下就能够看出来那些错误的地方,然后在改吧!,我也不太记得,因该就是用了foreach的缘故,没有别的了,你可以检查一下,把那里改成普通的for即可  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-03 10:37 keith
我大体研究了你的源码,发现你的标签用处不是很大,对于大量数据的问题还是不能很好的解决。为什么呢?
对大量数据来说,我们一般采用数据库,我们希望能从数据库中取出分页所显示的部分记录。其实难道也是针对数据库进行分页,上面楼主提到用while (rs.next() && i < pageInfo.getPageSize()) 还是通过控制游标来获取所需要的记录。这样对数据量很大时还是比较慢的,尽管没有取出所有记录速度上有了提升。

还有个问题就是对安表头排序的问题,标签只是先取出本页记录,然后对本页记录再排序。而实际应用中希望的绝大部分是先安数据库字段来排序,然后取出本页的记录。所以你的分页功能没有太大的意义,个人观点,武断了点,见谅!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-03 11:17 大明白
to keith
第一点,提取数据问题,这个标签只是给出一个要提取数据的范围,倒是你是要用 select top 提,还是oracle的特殊语法提取,那就是开发者的事情了,所以这里不能给出针对不同数据的在sql上的提取,那是进一步对数据库的处理,和这个标签没有关系,否则,我不做了一个hibernate分页功能了,还的定义不同数据库的语义,你觉得那时这个标签该做的事情吗!!!
注意:那只是演示代码,当然提取数据也不止那一种,而且我用的是absolute来直接定位游标位置的,而不是用的循环,只有在提取数据时用了循环, 还有就是用select top 10 ....(sql server)还有其它数据库类似用法提取数据,我现在就知道这两种快速提取数据的办法,你还有其他的好的方法提取数据吗?高效的!可以告诉我吗?

第二点,你说的排序问题,实际上你又把问题搅到一块去了,这个标签提供了当前是按第几列进行排序信息,至于有用到这个信息,在sql语句添加不同 order by的问题,那是利用这个标签的开发者的事情,同样不是这个标签的问题,

所以利用这个标签的人只能做这些事情
根据页面传过来的消息,来作整理数据集合的事情,
标签提供了用户接口信息,
例如,从那条到那条,那列处于排序状态等等,志与开发者如何利用这信息,那就不是这个标签的事情了,实际上,完全可以在这个基础上在进一步的对这些信息在针对不同数据再进行封装,会更好,而不应该做到这个标签里面

不知道你同不同意这个观点

如果你不太讲究结构的化,我以前做的qixin000tag标签完全可以达到你的要求,适用范围不一样,那个很省事,开发也很快,但是由于数据访问都封装到里面去了,有些开发者可能不愿意,所以,我又做了着更开放的小标签,
大家可以在这个基础上再进行更改,实际上也没有太大的更改之处了,因为就是一个通过页面信息进行提取数据的功能,至于如何提取,是进一步的事情!!!!
所以大家可不要说将一个标签的功能弄得大而全,那就没有了灵活性,而应该都弄成小的模块,来组合更好,就像DisplayTag没有作更好的针对数据的分页功能一样,那不是他该做的事情,你说对不对!   回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-03 12:52 keith
to 大明白:

既然对大量数据的处理和DT原来的处理方式差不多,那你的标签有什么意义呢?

当然你标签的优点是让取出来的实际记录条数和pageInfo.setMaxCount(int)分开,而DT实际记录数和maxCount是相同的。所以DT要显示分页就必须取出所有记录。

另外我发现,当URL参数比较多的情况下,你的标签可以正常保持住参数,但DT的标签却将参数丢失了(点击表头排序时)。我测试了DT原来的例子是可以保持参数的。
后来将:qixin0改为0,qixin1改为1,DT运行就正常了,参数不会丢失。像qixin0这样长参数就有问题。
request.setAttribute("d-1234-w0", "0");
request.setAttribute("d-1234-w1", "1");
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-03 13:21 大明白
to keith
你还是没有理解我坐的标签的意思
我坐的标签没有用dt的分页功能,而是自己做的,抛弃了dt的分页,正因为dt有像你说的那个缺点,所以只有把所有数据传过去,他才能正确分页,所以我自己做了一个分页的栏,而传递给dt的只有一页数据,所以自然它就不分页了,但是还要显示所有数据的分页怎么办,所以就设置了一个setmaxCount虚拟的总数,尔并没有给他那么多数据显示,但是 我的标签却可以根据这个数来计算分页,达到传递一页数据仍然能够很好处理分页的目的,难道你没有明白吗,你还是再看看我的代码吧!!
一句话就是:dt只显示一页,dtp分页
我现在只发现dt有这样几个参数,s,p,o其他均作为addminInfo参数传递,应该不丢失,只是位置放错了,可以从addinInfo中得到,如果有问题可以自己修改,反正有源码!

注意事项看我的主题帖子!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-08 10:28 even
我想问问这样如果使用导出功能时,只能导出page的数据,而不能导出List的数据,对吗?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-10 11:38 大明白
to even
实际上我也没用过displaytag的导出功能,所以我也不知道displaytag是如何设定导出数据的,我想他导出时应该走一遍后台,你可以看看是如何导出的,这应该是displaytag的功能,如果他要所有的数据,那你就dt通过标志位,在CustomHandler里面取就是了,要多少有多少!  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-08-23 21:07
各位用valuelist不就轻松解决这个问题了吗?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-10-13 13:25 lx
读了半天。还是最后一个人说到点子上了。  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-10-14 11:12 qixin000
现在我发现现实就是用<c:forEach>最好
但是需要一个提取数据用的类,我做的就是这个标签库
valuelist太麻烦,好像还得和spring弄在一块,麻烦,而且要求人家必须用spring不太好
如果单从显示的方面来说还不如用jstl:foreach  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-11-10 17:41 sophitia
看了楼主的帖子所是代码必须在JDK1.5以上运行,我使用的1.4.08不知道用1.5对我以前的程序会有什么影响。
然后就是我觉得有几个问题想问,通过这种实现虽然解决的关于大数据量的分页面,但是displayTag提供的排序功能肯定全局的排列序列不能用了,局部排序也不一定能使用(由于我没有测试过)。这样displaytag好象就只是用来显示表的作用,其他作用就完全没有了。
不知道说得是否恰当,请 大明白 回答  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-11-11 14:18 qixin000
我现在已经不用displaytag来做显示了,我现在用jstl的foreach来做显示,所以我把我的标签做的完善了一些,但是指作为提取数据之用,我把页脚也单独作为一个标签了,但是由于内部url用了utf-8编码,现在只支持web application 中的URIEncoding=UTF-8这种设置,我没改,也懒得改了.如果你有血药我可以给你源代码,你自己将这里变成配置文件,这样你就可以设置了.
jdk1.5在这个标签我用到了泛型及foreach,所以jdk1.4不能用

而其使用这个标签的规范我已经改改了
你再看看使用说明吧  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2005-11-16 10:41 wafer
非常好,楼住讲讲你的新方法是怎么用的吧,有什么好处?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-03-18 11:04 borlandvip
怎么解决导出excel的时候,不导出列表中的链接信息  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-04-12 18:21 kikio
能不能将tag中的请求下一个页面的url的地址不改变????
即使是地址栏中的url不变也可以的
急  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-05-10 11:03 fbysss
跟我的想法一样,在做这东东之前,先搜了相关资料,发现JAVA在这个地方太弱了!JSP出来这么多年了,连个DATAGRID也没有!先研究一下你的东西,如果真好的话,可以弄个开源项目,一起发扬光大。  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-05-10 13:29 fbysss
你的demo呢?有没有完整的?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-07-28 20:37 neon
大家有不有完整点的DisplayTag标签资料?  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-07-28 20:38 neon
有的话发给我看看吧 谢了 牛人们
dudeng2006@163.com  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-08-12 23:30 yht
楼主有没有完整点的资料!
发给我一份吧!
yht0905@sina.com  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-08-12 23:30 yht
楼主所用样式表有没有,发给小弟一份好吗?
yht0905@sina.com  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2006-08-15 10:40 yht
我想实现楼主我用样式,怎么实现,DisplayTag自带样式吗?
怎么样设置,楼主能否提供给小弟呢?
yht0905@sina.com  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-01-25 16:18 冥王星
仔细看display1.1的文档,里面有提到怎么扩展开支持部分数据的分页,有两种方法:1)实现一个它指定的接口;2)直接给tabletag设置相关属性
the first one uses the valuelist pattern, and requires that the object that you give to displaytag implements the org.displaytag.pagination.PaginatedList interface. You can pass this object to displaytag as an usual list, and it will extract paging and sorting information from it. This way is more recommended if you have to build your backend layer and you can easily follow this pattern.
a second way, recommended if you only have to use partial list for few tables that show a performance problem using full lists, is passing all the needed parameters as separate tag attributes (recors to be shown, page number, total number of records...)  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-10-31 14:10 Ray Chiang
您好~我是對岸來的。
我只在display-table tag中include一個jsp檔,上面使用displaytag的setProperties tag,就可以改變您所指的紅色框部份的風格。
至於分頁機制,implements PagaintedList interface並從http parameter中取的page number ,及 sortitem等等parameter,並傳入dao就可以針對每次跳頁所從Data base中撈取一定range的data。
有興趣話,我再把圖貼及部份code貼上來給您看吧~  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-11-01 16:06 new
关于displaytagpro.rar
web.xml 要怎么配置
我着怎么老有错!
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-11-01 17:32 大明白

@new
不需要特殊的配置  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-11-02 08:55 new
@大明白

我不太明白
displaytag.jar 配置的web.xml
<filter>
<filter-name>exportFilter</filter-name>
<filter-class>
org.displaytag.filter.ResponseOverrideFilter
</filter-class>
</filter>

displaytagpro.jar 要怎么写
不好意思经验不多 请多多指教  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-11-02 11:50 new
有时间给我传份完整的例子吧
上面的哪个下载不了
我的QQ: 343793577
  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2007-11-06 13:48 大明白
推荐你用我新写的一个分页标签。那个比较好用,看我的blog  回复  更多评论
  

# re: DispalyTag功能扩展,解决大数据量显示,分页功能的问题! 2008-05-30 14:08 徐杰
@lyjjq
jdk版本的问题,他的代码是在jdk15下编译的,你用的jdk版本低于1.5导致。。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: