关于display:tag的使用

关于display:tag的使用
自定义描述:
display:tag用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等,反正我在做项目时需要的功能它都给我提供了,而且使用起来非常的方便。能够大大减少代码量。
一.display:tag使用步骤:
1.首先要下载display:tag的jar包了。将jar包放到WEB-INF的lib文件夹下。另外还需要其他辅助包:apache的commons-lang,commons-collections和standard包.
其它包可以访问:Display Tag的官方网站http://displaytag.sourceforge.net。
2.在web.xml添加
<taglib>
<taglib-uri>http://displaytag.sf.net</taglib-uri>
<taglib-location>/WEB-INF/displaytag.tld</taglib-location>
</taglib>

3.在jsp页面添加display:tag标签说明
<%@ taglib uri="http://displaytag.sf.net"prefix="display" %>
二、常用功能:
1.分页
分页,只需在display:table标签中添加一项pagesize="每页显示行数",
例如:<display:table name="test"pagesize="10"/>
2.排序
display tag可对列进行排序,就是点击列名,对该列的数据进行排序。只需对想要排序的列添加sort="true"就可以了,在display:table中添加defaultsort="列数",可默认对指定的列排序。
示例:
<display:table name="test"styleClass="list" cellspacing="0" cellpadding="0"defaultsort="1">
<display:columnproperty="id" title="ID"sort="true"/>
<display:columnproperty="name" url="detail.jsp" paramId="id"
paramProperty="id"sort="true"/>
<display:columnproperty="email" sort="true"/>
<display:columnproperty="description" title="Comments"/>
</display:table>
注意:如果table有分页,DisplayTag默认只对当前页进行排序,如果想对整个list排序,只需在display:table之间添加一段代码:
<display:setPropertyname="sort.amount" value="list"/>
3.导出
在display:table中添加export="true"DisplayTag,默认会提供三种数据导出方式:CSV、Excel、XML。
另外Display Tag还可以导出为PDF格式,在http://prdownloads.sourceforge.net/itext/下载一个辅助包iText.jar,copy到lib目录下,然后在display:table之间添加一段代码:
<display:setPropertyname="export.pdf" value="true"/>,就可以了。
4.分组
分组只是需要在column里增加group属性

<display:tablename="test">
<display:columnproperty="city" title="CITY" group="1"/>
<display:columnproperty="project" title="PROJECT" group="2"/>
<display:columnproperty="amount" title="HOURS"/>
<display:columnproperty="task" title="TASK"/>
</display:table>

三.标签取得数据的数据源
1.范围:有四种
pageScope
requestScope (默认) <display:tablename="test2" >
sessionScope <display:tablename="sessionScope.holder.list" >注意,这里要指定范围,非默认
applicationScope
4. Display Tag的属性设置

前面所说的display:setProperty 是一种改变DisplayTag属性的方法,但是在每个jsp中都要写太麻烦了。

DisplayTag中设置了很多默认的属性,它有一个专门的属性文件,是在它的jar包中的displaytag/properties/TableTag.properties
想要改变它的默认属性,我们可以在WEB-INFclasses下新建一个文件displaytag.properties,仿照TableTag.properties中属性的格式设置需要修改的属性。
TableTag.properties中的#messages中设置的是显示在页面上的提示信息。默认是英文的,我们可以把它改为中文的。不过这里只能使用unicode,就是说中文字符必须转换为unicode码,这个可以使用jdk自带的native2ascii.exe进行转换。
四、通过增加id属性创建隐含的对象
<display:table name="test"id="testit">
<display:columnproperty="id" title="ID" />
<display:columnproperty="name" />
<display:columntitle="staticvalue">static</display:column>
<display:columntitle="row number (testit_rowNum)">
<%=pageContext.getAttribute("testit_rowNum")%></display:column>
<display:columntitle="((ListObject)testit).getMoney()">
<%=((ListObject)pageContext.getAttribute("testit")).getMoney()%>
</display:column>
</display:table>
注意到在<display:table/>里增加了id属性,这时就在pagecontext里创建了一个隐含对象,指向List里的当前对象,
可以通过(ListObject)pageContext.getAttribute("id")来捕获这个对象。同时还创建了一个id_rowNum对象,同样,可通过pageContext.getAttribute("testit_rowNum")来捕获,它仅仅代表当前行的行数。
有了这两个隐含对象,就可以通过其他标签来访问,例如Jstl:
<display:table id="row"name="mylist">
<display:columntitle="row number" >
<c:outvalue="${row_rowNum}"/>
</display:column>
<display:columntitle="name" >
<c:outvalue="${row.first_name}"/>
<c:outvalue="${row.last_name}"/>
</display:column>
</display:table>

六、显示部分数据
显示开始五条数据:通过设定length属性
<display:table name="test"length="5">
<display:columnproperty="id" title="ID" />
<display:columnproperty="email" />
<display:columnproperty="status" />
</display:table>

显示第三到第八条数据:通过设定offset和length属性
<display:table name="test"offset="3" length="5">
<display:columnproperty="id" title="ID" />
<display:columnproperty="email" />
<display:columnproperty="status" />
</display:table>
七、对email和url地址的直接连接
<display:table name="test">
<display:columnproperty="id" title="ID" />
<display:columnproperty="email" />
<display:columnproperty="url" />
</display:table>

如果要显示的对象里包含email和url地址,则可以在display:column里直接设定来直接连接
八、使用装饰模式转换数据显示(写自己的 decorator )
A、对整个表格应用decorator
<display:table name="test"decorator="org.displaytag.sample.Wrapper" >
<display:columnproperty="id" title="ID" />
<display:columnproperty="email" />
<display:columnproperty="status" />
<display:columnproperty="date" />
<display:columnproperty="money" />
</display:table>
org.displaytag.sample.Wrapper即自己写的decorator,它要继承TableDecorator类,看看它的一个方法:
public String getMoney(){
return this.moneyFormat.format(((ListObject)this.getCurrentRowObject()).getMoney());
}
通过父类的getCurrentRowObject()方法获得当前对象,然后对其getMoney()方法进行‘油漆’
关于display:tag的使用
B、对单独的column应用decorator
<display:tablename="test">
<display:columnproperty="id" title="ID" />
<display:columnproperty="email" />
<display:columnproperty="status" />
<display:columnproperty="date" decorator="org.displaytag.sample.LongDateWrapper"/>
</display:table>
org.displaytag.sample.LongDateWrapper要实现ColumnDecorator接口,它的方法:
public final String decorate(ObjectcolumnValue){
Date date = (Date) columnValue;
return this.dateFormat.format(date);
}

显然,它获得不了当前对象(因为它实现的是接口),仅仅是获得该对象的columnValue,然后‘油漆’
创建动态连接
有两种方法创建动态连接:
A、在<display:column/>里通过增加href、paramId、paramName、paramScope、paramProperty属性
href       基本的URL 地址
paramId     加在URL 地址后的参数名称
paramName    数据bean的名称,一般为null(即使用当前List里的对象)
paramScope    数据bean的范围,一般为null
paramProperty  数据bean的属性名称,用来填充URL 地址后的参数值
<display:tablename="sessionScope.details">
<display:column property="id" title="ID"href="details.jsp" paramId="id" />
<display:column property="email" href="details.jsp"paramId="action" paramName="testparam" paramScope="request"/>
<display:column property="status" href="details.jsp"paramId="id" paramProperty="id" />
</display:table>
这种方法简便直接,但缺点是无法产生类似details.jsp?id=xx&action=xx的复合URL
B、应用decorator 创建动态连接:
<display:table name="sessionScope.details"decorator="org.displaytag.sample.Wrapper" >
<display:column property="link1" title="ID"/>
<display:column property="email"/>
<display:column property="link2" title="Actions"/>
</display:table>
org.displaytag.sample.Wrapper里的方法:

public String getLink1(){
ListObject lObject= (ListObject)getCurrentRowObject();
int lIndex= getListIndex();
return "<a href="details.jsp?index=" + lIndex +"">" + lObject.getId() +"</a>";
}
public String getLink2()
{
ListObject lObject= (ListObject)getCurrentRowObject();
int lId= lObject.getId();
return "<ahref="details.jsp?&action=view">View</a>| "
+ "<ahref="details.jsp?&action=edit">Edit</a>| "
+ "<ahref="details.jsp?&action=delete">Delete</a>";
}
导出数据到其他格式(页面溢出filter??)
在<display:table/>里设定export="true"
在<display:column/>里设定media="csv excelxml pdf" 决定该字段在导出到其他格式时被包不包含,不设定则都包含
<display:setProperty name="export.csv" value="false"/>
决定该种格式能不能在页面中导出
<display:table name="test" export="true"id="currentRowObject">
<display:column property="id"title="ID"/>
<display:column property="email"/>
<display:column property="status"/>
<display:column property="longDescription"media="csv excel xml pdf" title="Not OnHTML"/>
<display:column media="csv excel" title="URL"property="url"/>
<display:setProperty name="export.pdf" value="true"/>
<display:setProperty name="export.csv" value="false"/>
</display:table>
配置属性,覆盖默认
两种方法:
A、在程序classpath下新建displaytag.properties文件
B、对于单个表格,应用<display:setProperty>标签
具体可配置的属性:http://displaytag.sourceforge.net/configuration.html
具体示例:
<display:table name="test" export="true" sort="list"pagesize="8">
<display:column property="city" title="CITY"group="1" sortable="true"headerClass="sortable"/>
<display:column property="project" title="PROJECT"group="2" sortable="true"headerClass="sortable"/>
<display:column property="amount"title="HOURS"/>
<display:column property="task"title="TASK"/>
</display:table>
sort="list" 对整个list进行排序
导出数据到其他格式时,group无效
在这里我要提出一点,当display tag显示的数据与后台所给的数据不一致,可以用JSTL:
<display:table name=".." id="listTable"pagesize=".."
export="true" requestURI="">
<display:column sortable="true"headerClass="sortable" title="TYPE">
<c:iftest="${listTable.type==0}"><!--listTable必须与上面的display:table的id属性值相同-->
类型0
</c:if>
<c:iftest="${listTable.type==1}">
类型1
</c:if>
<c:iftest="${listTable.type==2}">
类型2
</c:if>
<c:iftest="${listTable.type==3}">
类型3
</c:if>
</display:column>

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/296479.html

更多阅读

高周波熔接机的使用方法 高周波塑料熔接机

高周波熔接机的使用方法——简介高周波熔接机的使用方法,共有九个步骤,需要按照顺序操作:高周波熔接机的使用方法——方法/步骤高周波熔接机的使用方法 1、先接通气源:拨起气体调节阀旋扭,将气压调整到4~7Kg范围内。高周波熔接机的使用

HC-05蓝牙模块与单片机的使用 hc05蓝牙模块

HC-05蓝牙模块与单片机的使用——简介关于HC-05蓝牙模块如何搭配单片机使用,还是以Arduino UNO升级改进版Manduino UNO为例,进行说明。HC-05蓝牙模块适用于各种3.3V的单片机系统,模块可以使用AT指令设置波特率配对、密码用户信息等,默

关于真实女友的去码补丁 使用 真实女友去码后图片

关于真实女友的去码补丁 使用——简介真实女友的补丁关于真实女友的去码补丁 使用——工具/原料去码补丁真实女友关于真实女友的去码补丁 使用——方法/步骤关于真实女友的去码补丁 使用 1、首先找到游戏目录下的 data 文件夹关

关于阅读记录卡的使用说明 福昕阅读器使用说明书

关于阅读记录卡的使用说明为了激发学生的读书热情,配合学校开展的“营造书香班级、寻找书香家庭,提升孩子的人文素养”活动,经过年级老师的集体教研,现设计并下发了年级的读书记录卡,旨在培养学生的良好阅读习惯,增加识字量,提高学生阅

声明:《关于display:tag的使用》为网友岁少年分享!如侵犯到您的合法权益请联系我们删除