Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等。具体的说明请参考Display Tag的官方网站http://displaytag.sourceforge.net。
DisplayTag为一个开源的标签库,使用DisplayTag必须从网站下载DisplayTag的jar包,并将jar引用到用户所用的工程中。
同时,DisplayTag.jar依赖Apache项目的支持,所以在使用同时,必须下载Apache相关的jar包。
DisplayTag使用了两个标签,displaytag-1.1.tld和fmt.tld。使用了servlet2.4以前的版本,需要在web.xml中配置。
<taglib>
<taglib-uri>http://displaytag.sourceforge.net/</taglib-uri>
<taglib-location>/WEB-INF/displaytag-11.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
两个标签中,displaytag-1.1.tld是DisplayTag的官方标签,另外fmt.tld的标签作用是为了显示中文而设定的。
DisplayTag能够在request和session范围内获得相关的List。所有的数据必须从List中获得。
1.单表查询结果集
List userList=getHibernateTemplate().find(“from user”);
Request.setAttribute(“userList”, userList);
2.多表查询结果集
List userCustomerList=getHibernateTemplate().find(“select new MyObject(user.Name,user.No…..) from user,customer”);
Request.setAttribute(“userCustomerList”,” userCustomerList”);
要先定义好MyObject这个class,并且有new MyObject(….)构造函数
3.以上两种方法每次在翻页时,都是对所有查询结果进行一次查询,如果想实现每次只查询10条数据,则需要自己构造sql执行。DisplayTag提供了一些变量.
String strPage = request.getParameter("page");
String strDir = request.getParameter("dir");
String strSort = request.getParameter("sort");
Action从request里面获得这三个参数,都是DisplayTag自动生成的,用户无需管理这三个参数。
DisplayTag页面基本组成
1. 要引入标签
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>
2. 在页面上使用displayTag标签
1) 最简单的情况
标签遍历List里的每一个对象,并将对象里的所有属性显示出来。一般用于开发的时候检查对象数据的完整性。
2) 使用 标签的情况
property对应List里对象的属性(用getXXX()方法取得),title则对应表格表头里的列名。定义列有两种方式:
A、
使用 标签里的property属性来定义
B、 email@it.com
在 标签体里增加内容,可以是常量,也可以用其他标签等等
两种方式比较,用property属性来定义更加快速和利于排序
3) 表格显示样式的定义
A、 在 和 标签里指定标准的html属性
style=”……”>
style=”……”/>
B、修改样式表
class="mars">
class="idcol"/>
通过 class 属性来指定所要应用的样式 ( 自己定义的样式 ) 。也还可以在其默认样式表里( ./css/screen.css )直接修改
4) 标签取得数据的数据源
有四种范围
pageScope
requestScope (默认)
sessionScope 注意,这里要指定范围,非默认
applicationScope
5) 通过增加id属性创建隐含的对象
id="row" name="mylist">
6) 显示部分数据
显示开始五条数据:通过设定length属性
显示第三到第八条数据:通过设定offset和length属性
id"
${row.first_name}-${row.last_name}
注意到在 里增加了 id 属性,这时就在 page context 里创建了一个隐含对象,指向 List 里的当前对象 ; 同时还创建了一个 id_rowNum 对象 , 它仅仅代表当前行的行数。