首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

运用displaytag进行分页显示

2012-11-05 
使用displaytag进行分页显示要格式化显示数据,又写不好自己的分页程序。不如试试displaytag标签。displaytag

使用displaytag进行分页显示

要格式化显示数据,又写不好自己的分页程序。不如试试displaytag标签。displaytag即可以进行几十万条的数据同时加载进行分页又可以定制自己的样式。当然它还有许多其他的功能,因为使用时间不长。我也不太清楚.这里只讲它的分页功能就好了。

要用displaytag标签进行动态数据分页,在WEB工程的LIB里加入displaytag.jar。然后在JSP页面里加入这句代码就可以使用displaytag标签了。

<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>

要分页显示肯定得有这么几步是少不了的

1.工具类或者分页类。2.准备数据。3.绑定数据的JSP

实现思路:可以自己写个包装类用于你要进行分页显示的BEAN。也就是上面提到的第一步类似一个工具类.源码如下:

import org.displaytag.decorator.TableDecorator;

public class Wrapper extends TableDecorator {

??? public String getDeptId(){
??? ?Demo organise = (Demo)getCurrentRowObject();
??? ?String demoid = organise.getId();
??? ?if(demoid==null){
??? ??demoid="";
??? ?}
??????? StringBuffer htmlStr = new StringBuffer();
??????? htmlStr.append("<div align='center'><a href='../organization/deptEdit.htm?parentId=");//在这里加//一句这样的代码可以对单条记录进行修改。
??????? htmlStr.append(organise.getId());
??????? htmlStr.append("'>");
??????? htmlStr.append(demoid);
??????? htmlStr.append("</a></div>");
??????? return htmlStr.toString();
??? }

}

2.准备数据:

在ACTION里或者controller取得业务逻辑层传递过来的数据并绑定在request作用域里。

??HttpSession session = (HttpSession)request.getSession(true);
??String pageListSize = (String)session.getAttribute("PAGE_LIST_SIZE");
??String type =?request.getParameter("operation");

??if (pageListSize == null) {
???session.setAttribute("PAGE_LIST_SIZE", "10");
???pageListSize = "10";
??}
??if(type.equals("zx")){
??List list = dataSource.getData();
??request.setAttribute("operation","zx");
??request.setAttribute("list",list);
??}
??if(type.equals("gd")){
??List list = dataSource.getGlist();
??request.setAttribute("list",list);
??request.setAttribute("operation","gd");
??}
??request.setAttribute("pageListSize",pageListSize);?

??return new ModelAndView(getCustomUrl());

3.绑定数据

? <c:if test="${operation == 'gd'}">
??<c:if test="${!empty list}">
???<div style="height:680;width:100%;overflow:auto;">
???<table bgcolor="#6F9DD9" border="0" width="100%" cellpadding="0"
????cellspacing="0">
????<tr>
????<td colspan="4" align=center bgcolor=red>
????工单列表
????</td>
????</tr>
????<tr>
?????<td>
??????<display:table id="dept" name="list" pagesize="${pageListSize}" style="width:100%" cellspacing="1"
???????requestURI="${path}/user/list.htm" decorator="com.ultrapower.test.web.Wrapper">
??????????????<tr? property="deptId"
????????sortable="true" style="width:30%;cursor: hand" 返回 "
???????onclick="invokeIndxe();"/>
???</div>
??</c:if>
??</c:if>

自此就可以使用displaytag进行应用的分页显示了。

7 楼 zdonking 2009-01-19   bei-jin-520 写道不用担心效率的问题我测试过一次性加载几十万条数据没问题。


一次性内存里装几十万数据...只为了一个列表分页查询。 8 楼 freedomstyle 2009-02-22       我去试试了  呵呵  谢谢楼主分享啊!! 9 楼 51Edu 2009-02-24   bei-jin-520 写道不用担心效率的问题我测试过一次性加载几十万条数据没问题。

几十万跳,有点恐怖。 10 楼 oyprunner 2009-02-25   最近 我也用了这个组件
感觉开发是快了些 方便了 很多
不过 如果数据量大的话 性能能否还是这样 值得怀疑
毕竟 它是一次性把数据全部取出来的 (难道有另外的技术  什么 内分 外分的 …… 迷糊了  我也不清楚 )

可能以后新的版本 会做这方便的处理

所以 有些公司专本做这些组件出来 11 楼 bei-jin-520 2009-02-25   我写的这种是动态获取分页对象的就是继承了TABLE包装类。其实DISPLAY分页有多种解决方案。这次我又写了个实现接口的可以只在分页时查询数据库。不用一次性把数据全部读取出来,那样太占资源了。 12 楼 bei-jin-520 2009-02-25   有时间在传上来大家分享!呵呵 13 楼 niwei 2009-02-25   楼主是否用过extremeComponents,然后与displaytag做过比较呢,我看springside2.0里用的就是extremeComponents,不过改进了一下,不是一次全部取,可以分页从后台取数据,再实际应用中我倒觉得分页取的情况更多一点吧。 14 楼 hantsy 2009-02-26   oyprunner 写道最近 我也用了这个组件
感觉开发是快了些 方便了 很多
不过 如果数据量大的话 性能能否还是这样 值得怀疑
毕竟 它是一次性把数据全部取出来的 (难道有另外的技术  什么 内分 外分的 …… 迷糊了  我也不清楚 )

可能以后新的版本 会做这方便的处理

所以 有些公司专本做这些组件出来
谁说一次取出来?有没有看过它的文档?
它同样支持多次取出,这个在早先的两次版本中就实现了。。。从设计上比extremeComponent要好很多。
15 楼 hantsy 2009-02-26   niwei 写道楼主是否用过extremeComponents,然后与displaytag做过比较呢,我看springside2.0里用的就是extremeComponents,不过改进了一下,不是一次全部取,可以分页从后台取数据,再实际应用中我倒觉得分页取的情况更多一点吧。
extremeComponents的开发团队都已经放弃了extremeComponents的开发,这个组件已经很多年没有更新了,从开发角度看,和struts 1一样,除非维护,否则extremeComponents早就应该丢到垃圾筒去了。
他们已经开发了新的组件jmesa(http://code.google.com/p/jmesa/)代替extremeComponents。
而displaytag的开发一直在进行。
从现在的角度考虑,displaytag和jmesa是首选。
16 楼 hantsy 2009-02-26   bei-jin-520 写道我写的这种是动态获取分页对象的就是继承了TABLE包装类。其实DISPLAY分页有多种解决方案。这次我又写了个实现接口的可以只在分页时查询数据库。不用一次性把数据全部读取出来,那样太占资源了。
一般应该不用写任何包装类。。。除非你是要修改它的表。 17 楼 bei-jin-520 2009-02-26   引用hantsy 写道一般应该不用写任何包装类。。。除非你是要修改它的表。
可能你没听懂我的意思,我不是只是拿来用就可以。
18 楼 bei-jin-520 2009-02-26   oyprunner 写道最近 我也用了这个组件
感觉开发是快了些 方便了 很多
不过 如果数据量大的话 性能能否还是这样 值得怀疑
毕竟 它是一次性把数据全部取出来的 (难道有另外的技术  什么 内分 外分的 …… 迷糊了  我也不清楚 )

可能以后新的版本 会做这方便的处理

所以 有些公司专本做这些组件出来
大哥你看过官方文档吗?值得怀疑!!!
19 楼 oyprunner 2009-02-28   bei-jin-520 写道oyprunner 写道最近 我也用了这个组件
感觉开发是快了些 方便了 很多
不过 如果数据量大的话 性能能否还是这样 值得怀疑
毕竟 它是一次性把数据全部取出来的 (难道有另外的技术  什么 内分 外分的 …… 迷糊了  我也不清楚 )

可能以后新的版本 会做这方便的处理

所以 有些公司专本做这些组件出来
大哥你看过官方文档吗?值得怀疑!!!


不好意思,我还没看过,最近做毕业设计
涉及到分页,看到网上说的用组件可以,
而且到displaytag官网上去下了包,网站全英文的,第一次这样在英文网站找东西
还满吃力的,不过渐渐的感觉好点,没注意到帮助文档

听大哥这么一说,再去看看。
20 楼 oyprunner 2009-02-28   英文确实很重要! 21 楼 oyprunner 2009-02-28   bei-jin-520 写道我写的这种是动态获取分页对象的就是继承了TABLE包装类。其实DISPLAY分页有多种解决方案。这次我又写了个实现接口的可以只在分页时查询数据库。不用一次性把数据全部读取出来,那样太占资源了。

期待早点传上来,先谢谢分享了
22 楼 duduli 2009-03-01   确实内存的开销会很大的,如果有1000个人同时访问,然后每个都有几万条数据,服务器能受得了吗? 23 楼 sunhaitao123 2009-03-04   把数据全部加载会有用sql分页那样快吗 24 楼 苏茂林 2009-03-05   dzq2008 写道呵呵,好东西,不用再为分页发愁了!
25 楼 aishangtao 2009-07-29   它这个是在前台进行分页的, 如果是上千条数据的话, 会不会很慢啊。 26 楼 q380100484 2012-07-23   好像都没有jar包的呀

热点排行