如何在SpringMVC架构中使用Display Tag标签实现分页功能

一、什么是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">
测试实例:

在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值