??xml version="1.0" encoding="utf-8" standalone="yes"?>
首先当然是要下蝲它的jar包了Q这里可以下载到最新的版本。将jar包放到Web-INF的lib文g夹下。另外还需要两个辅助包Qapache的commons-lang和standard包,更多的辅助包可以在这里下载?br />
在Web.XML下添加一个filter
<filter>
<filter-name>exportFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
在JSP面做一个引用:(x)
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>
首先我们定义一个list
<%
List test = new ArrayList( 6 );
test.add( "Test String 1" );
test.add( "Test String 2" );
test.add( "Test String 3" );
test.add( "Test String 4" );
test.add( "Test String 5" );
test.add( "Test String 6" );
request.setAttribute( "test", test );
%>
当我们想在jsp面上显C个listӞ我们只需要写一句话
<display:table name="test" />
display tag?x)自动生成一个table
如果list是从控制层抛出来的,name可用EL表达式表C?br />
<display:table name="${test}" />
q是最单的display tag的用,我们可以l它加上样式{,也可以定义显C的列,下面的table昄复杂一?br />
<display:table name="test" styleClass="list" cellspacing="0" cellpadding="0">
<display:column property="id" title="ID" class="idcol"/>
<display:column property="name" />
<display:column property="email" />
<display:column property="description" title="Comments"/>
</display:table>
如果惌l它加个链接也很?下面的代码给name加了q接Qƈ附带id参数Qemail也自动连接到mailto:XXX
<display:table name="test" styleClass="list" cellspacing="0" cellpadding="0">
<display:column property="id" title="ID" class="idcol"/>
<display:column property="name" url="detail.jsp" paramId="id" paramProperty="id"/>
<display:column property="email" autolink="true"/>
<display:column property="description" title="Comments"/>
</display:table>
下面介绍几个Display最常用的功能,更多功能请参考http://displaytag.homeip.net/displaytag-examples-1.1/?br />
1. 分页
如果惛_代码分页Q只需在display:table标签中添加一pagesize="每页昄行数"Q如
<display:table name="test" pagesize="10"/>
2. 对列排序
display tag可对列进行排序,是点击列名Q对该列的数据进行排序。你只需Ҏ(gu)要排序的列添?sort="true" O(jin)KQ如下面的代码可对前三列q行排序。在display:table中添加defaultsort="列数"Q可默认Ҏ(gu)定的列排序?br />
<display:table name="test" styleClass="list" cellspacing="0" cellpadding="0" defaultsort="1">
<display:column property="id" title="ID" class="idcol" sort="true"/>
<display:column property="name" url="detail.jsp" paramId="id" paramProperty="id" sort="true"/>
<display:column property="email" autolink="true" sort="true"/>
<display:column property="description" title="Comments"/>
</display:table>
如果table有分,Display Tag默认只对当前进行排序,如果惛_整个list排序Q可以在display:table之间d一D代码:(x)
<display:setProperty name="sort.amount" value="list"/>
3. 导出数据
在display:table中添加export="true"Q看看会(x)出现什么!Display Tag默认?x)提供三U数据导出方式:(x)CSV、Excel、XML ?br />
另外Display Tagq可以导Zؓ(f)PDF格式Q在http://prdownloads.sourceforge.net/itext/下蝲一个辅助包iText.jarQcopy到l(f)ib目录下,然后在display:table之间d一D代码:(x)
<display:setProperty name="export.pdf" value="true"/>Q大功告成?/p>
4. Display Tag的属性设|?br />
前面所说的display:setProperty 是一U改变Display Tag属性的Ҏ(gu)Q但是在每个jsp中都要写太麻烦了?br />
Display Tag中设|了很多默认的属性,它有一个专门的属性文Ӟ是在它的jar包中的displaytag/properties/TableTag.properties惌改变它的默认属性,我们可以在WEB-INF\classes下新Z个文件displaytag.propertiesQ仿照TableTag.properties中属性的格式讄需要修改的属性?
TableTag.properties中的# messages中设|的是显C在面上的提示信息。默认是英文的,我们可以把它改ؓ(f)中文的。不q这里只能用unicodeQ就是说中文字符必须转换为unicode码,q个可以使用JDK自带的native2ascii.exeq行转换?
5. 其它功能
DisplayTagq有一些很实用的小功能Q这里提两个。一个是Ҏ(gu)据的FormatQ这?.1版本d的新功能Q可以用标{方式格式化时间、数字、字W串。比如日期,在需要格式化的column标签中添加format="{0,date,yyyy-MM-dd}"Q第一个参Cؓ(f)格式化的数据序号Q第二个参数是数据类型,数字为numberQ第三个参数为数据格式?br />
另外一个功能是对table数据的合计功能。在table标签中添?decorator="org.displaytag.decorator.TotalTableDecorator"Q然后在惌q行合计的数据列的column标签中添?total="true"Q该列就可以被计L了。但q个功能有个~点Q不能用在有分页的时候,它只能合计第一늚数据?br />
DisplayTag的不?br />
初次使用DisplayTag的h可能?x)觉得惊喜,但是用久了?x)发现很多问题Q最大的问题是对中文的支持不好,比如如果查询条g中有中文Q就无法页Q无法对中文排序Q将中文导出为指定文件时出现q{等。这些问题有时候会(x)让h很郁P有时候逼得你要M改它的源代码。下面是对以上几个问题的解决Ҏ(gu)Q?br />
1. 对于中文无法页、排序,最单的办法是修改Tomcat下的server.xml文g。找到HTTP的Connector标签Q在里面d一URIEncoding="..."Q引号里面的内容取决于你的页面编码,比如可以是GBKQUTF8{。这样上面两个问题就可以解决了?br />
2. 导出为文Ӟ(x)其实q个功能除了中文支持外还有很多其它问题,比如它会(x)Html标签一起导出、只导出昄的内容,但如果对tableq行了decoratorQdecorator后的内容无法导出。如果想要将中文正确导出Q需要修改DisplayTag源代码?br />
下蝲相同版本的源代码Q在org.displaytag.export.ExcelView.java文g中找到getMimeType()Ҏ(gu)Q将此方法修改ؓ(f) return "application/vnd.ms-excel;charset=GB2312";Q修改后导出数据的速度?x)慢很多Q不q将吧?br />
3. 新版的DisplayTag1.1d了对一ơ取部分数据的支持,相关的标{括partialList和sizeQ需要设|partialList="true"和size的大。具体怎么用偶q没研究?br />
文章整理Q西部数?-专业提供域名注册?a target="_blank">虚拟L服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果(zhn)要转蝲本文?请保留以上信息,谢谢!