用了一段時(shí)間的Display Tag,覺得非常好用,可發(fā)現(xiàn)好像使用這個(gè)東東的人挺少的,那偶也來寫篇文章。
Display Tag Lib是一個(gè)標(biāo)簽庫,用來處理jsp網(wǎng)頁上的Table,功能非常強(qiáng),可以對(duì)的Table進(jìn)行分頁、數(shù)據(jù)導(dǎo)出、分組、對(duì)列排序等等,反正我在做項(xiàng)目時(shí)需要的功能它都給我提供了,而且使用起來非常的方便。能夠大大減少代碼量。
介個(gè)是Display Tag的官方網(wǎng)站
http://displaytag.sourceforge.net。
首先當(dāng)然是要下載它的jar包了,
這里可以下載到最新的版本。將jar包放到WEB-INF的lib文件夾下。另外還需要兩個(gè)輔助包:apache的commons-lang和standard包,更多的輔助包可以在這里
下載。
在web.xml下添加一個(gè)filter
<filter>
<filter-name>exportFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
在jsp頁面做一個(gè)引用:
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>
首先我們定義一個(gè)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 );
%>
當(dāng)我們想在jsp頁面上顯示這個(gè)list時(shí),我們只需要寫一句話
<display:table name="test" />
display tag會(huì)自動(dòng)生成一個(gè)table
如果list是從控制層拋出來的,name可使用EL表達(dá)式表示
<display:table name="${test}" />
這是最簡單的display tag的使用,我們可以給它加上樣式等,也可以定義顯示的列,下面的table顯示復(fù)雜一些
<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>
如果想要給它加個(gè)鏈接也很簡單,下面的代碼給name加了連接,并附帶id參數(shù),email也自動(dòng)連接到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>
下面介紹幾個(gè)Display最常用的功能,更多功能請(qǐng)參考http://www.displaytag.org/index.jsp。
1. 分頁
如果想對(duì)代碼分頁,只需在display:table標(biāo)簽中添加一項(xiàng)pagesize="每頁顯示行數(shù)",如
<display:table name="test" pagesize="10"/>
2. 對(duì)列排序
display tag可對(duì)列進(jìn)行排序,就是點(diǎn)擊列名,對(duì)該列的數(shù)據(jù)進(jìn)行排序。你只需對(duì)想要排序的列添加 sort="true" 就OK,如下面的代碼可對(duì)前三列進(jìn)行排序。在display:table中添加defaultsort="列數(shù)",可默認(rèn)對(duì)指定的列排序。
<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默認(rèn)只對(duì)當(dāng)前頁進(jìn)行排序,如果想對(duì)整個(gè)list排序,可以在display:table之間添加一段代碼:
<display:setProperty name="sort.amount" value="list"/>
3. 導(dǎo)出數(shù)據(jù)
在display:table中添加export="true",看看會(huì)出現(xiàn)什么!Display Tag默認(rèn)會(huì)提供三種數(shù)據(jù)導(dǎo)出方式:CSV、Excel、XML 。
另外Display Tag還可以導(dǎo)出為PDF格式,在http://prdownloads.sourceforge.net/itext/下載一個(gè)輔助包iText.jar,copy到lib目錄下,然后在display:table之間添加一段代碼:
<display:setProperty name="export.pdf" value="true"/>,大功告成。
4. Display Tag的屬性設(shè)置
前面所說的display:setProperty 是一種改變Display Tag屬性的方法,但是在每個(gè)jsp中都要寫太麻煩了。
Display Tag中設(shè)置了很多默認(rèn)的屬性,它有一個(gè)專門的屬性文件,是在它的jar包中的displaytag/properties/TableTag.properties
想要改變它的默認(rèn)屬性,我們可以在WEB-INF\classes下新建一個(gè)文件displaytag.properties,仿照TableTag.properties中屬性的格式設(shè)置需要修改的屬性。
TableTag.properties中的# messages中設(shè)置的是顯示在頁面上的提示信息。默認(rèn)是英文的,我們可以把它改為中文的。不過這里只能使用unicode,就是說中文字符必須轉(zhuǎn)換為unicode碼,這個(gè)可以使用jdk自帶的native2ascii.exe進(jìn)行轉(zhuǎn)換。
原文參見:http://blog.csdn.net/clearwater21cn/archive/2005/02/21/296316.aspx