一、什么是Display Tag
- Display Tag Lib是一个标签库,用来处理JSP页面上的Table(表格),功能十分强大。
- Display Tag可以对Table进行分页、数据导出、分组、队列排列等等。
- Display Tag使用非常方便,能够大大减少代码编写量,提高编程效率。
- DisplayTag.jar依赖于Apache项目的支持,所以在使用的同时,必须使用Apache的相关jar包。
例如:
//根据项目需要选择不同的版本
displaytag-1.2.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.1.jar
commons-lang-2.3.jar
commons-logging-1.1.1.jar
jstl-1.1.2.jar
standard-1.0.6.jar
二、如何使用Display Tag
1 . 在JSP文件中引入标签
在JSP文件的头部代码中加入:
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
2 . 读取目标对象,实现Display Tag的各种功能:
<display:table name="list" offset="1" length="3">
<display:column property="userId" title="编号" />
<display:column property="userName" title="姓名" />
<display:column property="userAge" title="年龄" />
<display:column property="userSex" title="性别" />
<display:column property="userBrithday" title="出生日期" />
<display:column value="anubislinux@pmzeroa.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
</display:table>
- title属性指列的名称,如果需要显示某一列为固定值,只需要设定title的value值即可,不需要指定property属性
- length可以设置需要显示的数据条数
- length+offset可以设置需要显示的数据范围
- 如果要显示的对象里包含Email地址或Url地址,可以在display:column中设置autolink=“true”,来进行自动连接
3 . 使用Display Tag实现分页功能
在display:table属性中设置pagesize="number"可以设置每一页显示的信息条数
<display:table name="list" pagesize="10">
<display:column property="userId" title="编号" />
<display:column property="userName" title="姓名" />
<display:column property="userAge" title="年龄" />
<display:column property="userSex" title="性别" />
<display:column property="userBrithday" title="出生日期" />
<display:column value="anubislinux@gmail.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
</display:table>
Display Tag实现翻页功能的机制
- 如果一个表单中含有10000个bean,按照Display Tag自身的机制,如果是第一页(每一页包含n条数据),它会将前n条数据取出来,然后将剩余的(10000-n)条数据删除。
- 当点击下一页时,系统将自动在后台循环一次,将第二页的数据(n+1-2n)读取出来,再将剩余的数据删除。如此循环,就完成了翻页的操作,同时防止内存占用过大。
- 但在这个过程中,由于存在读取所有数据条数的动作,在数据量极大的情况下,有可能会造成内存溢出的情况。
<!-- requestURI指定返回的表单路径 -->
<display:table name="list" pagesize="2" requestURI="user/list.do">
<display:column property="userId" title="编号" />
<display:column property="userName" title="姓名" />
<display:column property="userAge" title="年龄" />
<display:column property="userSex" title="性别" />
<display:column property="userBrithday" title="出生日期" />
<display:column value="anubislinux@gmail.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
</display:table>
4 . 使用Display Tag实现排序功能
在需要进行排序的column中增加sortable="true"属性:
<display:table name="list" pagesize="2" requestURI="user/list.do">
<display:column property="userId" title="编号" />
<display:column property="userName" title="姓名" />
<!-- 设置年龄标题可以进行自动排序 -->
<display:column property="userAge" title="年龄" sortable="true"/>
<display:column property="userSex" title="性别" />
<display:column property="userBrithday" title="出生日期" />
<display:column value="anubislinux@gmail.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
</display:table>
如果需要对整个表单进行排序操作:
- 在< display:column/ >参数中添加sort="list"属性,实现对整个list对象进行排序操作
- 如果不添加这个属性,那么将仅对当前页面的数据进行排序
<display:table name="list" sort="list" pagesize="2" requestURI="user/list.do">
5 . 使用Display Tag实现动态连接
在< display:column/ >中添加href、paramId、paramName、paramScope、paramProperty属性分写实现连接不同的功能:
- href:连接基本URL地址
- paramId:加载在URL地址后的参数名称
- paramName:数据Bean的名称,一般为null
- paramScope:数据Bean的范围,一般为null
- paramProperty:数据Bean的属性名称,用来填充URL地址后的参数的值
<display:table name="list" pagesize="10" requestURI="user/list.do">
<display:column property="userId" title="编号" sortable="true"/>
<display:column property="userName" title="姓名" sortable="true"/>
<display:column property="userAge" title="年龄" sortable="true"/>
<display:column property="userSex" title="性别" sortable="true"/>
<display:column property="userBrithday" title="出生日期" sortable="true"/>
<display:column value="anubislinux@gmail.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
<!-- 添加动态连接功能 -->
<display:column href="user/loadUser.do" paramId="userId" paramProperty="userId" value="修改" title="修改" />
</display:table>
6 . 使用Display Tag实现数据导出功能
可以在Display Tag导出数据到指定数据格式
- 在< display:table/ >中设定export=“true”
- 在< display:column/ >中设定media=“csv excel xml pdf”,决定该字段在导出到指定格式时是否包含设置的文件格式,如果不指定则全部包含
- 在< display:setProperty name=“export.csv” value=“false” />配置属性,覆盖默认值
- 在程序classpath下新建displaytag.properties文件
- Display Tag还可以导出PDF文件格式,需要下载iText.jar辅助包
<display:table name="list" export="true" pagesize="10" requestURI="user/list.do">
<display:column property="userId" title="编号" sortable="true"/>
<display:column property="userName" title="姓名" sortable="true"/>
<display:column property="userAge" title="年龄" sortable="true"/>
<display:column property="userSex" title="性别" sortable="true"/>
<display:column property="userBrithday" title="出生日期" sortable="true"/>
<display:column value="anubislinux@gmail.com" autolink="true" title="电子邮件" />
<display:column value="http://www.baidu.com" autolink="true" title="访问网站" />
<display:column href="user/loadUser.do" paramId="userId" paramProperty="userId" value="修改" title="修改" />
</display:table>
7 . 使用Display Tag简单修改表格样式
<style type="text/css">
.tab{width:90%;//设置表格宽度
text-align:center;//设置文本对齐方式
background-color:black;//设置背景颜色
}
.tab tr th {background-color:white;} //设置标题行内部背景颜色
.tab tr td {background-color:white;} //设置数据行内部背景颜色
</style>
添加表格样式参数属性class="tab"
<display:table class="tab" name="list" export="true" pagesize="10" requestURI="user/list.do">