<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE社區(qū)

    茍有恒,何必三更起五更眠;
    最無(wú)益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    Display Tag使用小記

    Posted on 2008-08-21 12:46 xcp 閱讀(1186) 評(píng)論(0)  編輯  收藏 所屬分類: struts
    轉(zhuǎn)載于:http://www.builder.com.cn/2008/0317/772884.shtml
     用了一段時(shí)間的Display Tag,覺(jué)得非常好用,可在論壇上發(fā)現(xiàn)好像使用這個(gè)東東的人挺少的,那偶也來(lái)寫(xiě)篇文章。
        Display Tag Lib是一個(gè)標(biāo)簽庫(kù),用來(lái)處理jsp網(wǎng)頁(yè)上的Table,功能非常強(qiáng),可以對(duì)的Table進(jìn)行分頁(yè)、數(shù)據(jù)導(dǎo)出、分組、對(duì)列排序等等,反正我在做項(xiàng)目時(shí)需要的功能它都給我提供了,而且使用起來(lái)非常的方便。能夠大大減少代碼量。
        介個(gè)是Display Tag的官方網(wǎng)站

        首先當(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頁(yè)面做一個(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頁(yè)面上顯示這個(gè)list時(shí),我們只需要寫(xiě)一句話
        <display:table name="test" />
        display tag會(huì)自動(dòng)生成一個(gè)table

        如果list是從控制層拋出來(lái)的,name可使用EL表達(dá)式表示
        <display:table name="$" />

        這是最簡(jiǎn)單的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è)鏈接也很簡(jiǎn)單,下面的代碼給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://displaytag.homeip.net/displaytag-examples-1.1/
    1. 分頁(yè)
        如果想對(duì)代碼分頁(yè),只需在display:table標(biāo)簽中添加一項(xiàng)pagesize="每頁(yè)顯示行數(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有分頁(yè),Display Tag默認(rèn)只對(duì)當(dāng)前頁(yè)進(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è)置
        前面所說(shuō)的display:setProperty 是一種改變Display Tag屬性的方法,但是在每個(gè)jsp中都要寫(xiě)太麻煩了。
        Display Tag中設(shè)置了很多默認(rèn)的屬性,它有一個(gè)專門(mén)的屬性文件,是在它的jar包中的displaytag/properties/TableTag.properties
        想要改變它的默認(rèn)屬性,我們可以在WEB-INFclasses下新建一個(gè)文件displaytag.properties,仿照TableTag.properties中屬性的格式設(shè)置需要修改的屬性。
        TableTag.properties中的# messages中設(shè)置的是顯示在頁(yè)面上的提示信息。默認(rèn)是英文的,我們可以把它改為中文的。不過(guò)這里只能使用unicode,就是說(shuō)中文字符必須轉(zhuǎn)換為unicode碼,這個(gè)可以使用jdk自帶的native2ascii.exe進(jìn)行轉(zhuǎn)換。

    5. 其它功能
        DisplayTag還有一些很實(shí)用的小功能,這里提兩個(gè)。一個(gè)是對(duì)數(shù)據(jù)的Format,這是1.1版本添加的新功能,可以使用標(biāo)簽的方式格式化時(shí)間、數(shù)字、字符串。比如日期,在需要格式化的column標(biāo)簽中添加format="",第一個(gè)參數(shù)為格式化的數(shù)據(jù)序號(hào),第二個(gè)參數(shù)是數(shù)據(jù)類型,數(shù)字為number,第三個(gè)參數(shù)為數(shù)據(jù)格式。
        另外一個(gè)功能是對(duì)table數(shù)據(jù)的合計(jì)功能。在table標(biāo)簽中添加 decorator="org.displaytag.decorator.TotalTableDecorator",然后在想要進(jìn)行合計(jì)的數(shù)據(jù)列的column標(biāo)簽中添加 total="true",該列就可以被計(jì)算總數(shù)了。但這個(gè)功能有個(gè)缺點(diǎn),不能用在有分頁(yè)的時(shí)候,它只能合計(jì)第一頁(yè)的數(shù)據(jù)。

    DisplayTag的不足
        初次使用DisplayTag的人可能會(huì)覺(jué)得驚喜,但是用久了會(huì)發(fā)現(xiàn)很多問(wèn)題,最大的問(wèn)題是對(duì)中文的支持不好,比如如果查詢條件中有中文,就無(wú)法翻頁(yè),無(wú)法對(duì)中文排序,將中文導(dǎo)出為指定文件時(shí)出現(xiàn)亂碼等等。這些問(wèn)題有時(shí)候會(huì)讓人很郁悶,有時(shí)候逼得你要去修改它的源代碼。下面是對(duì)以上幾個(gè)問(wèn)題的解決方法:
        1. 對(duì)于中文無(wú)法翻頁(yè)、排序,最簡(jiǎn)單的辦法是修改Tomcat下的server.xml文件。找到HTTP的Connector標(biāo)簽,在里面添加一項(xiàng)URIEncoding="...",引號(hào)里面的內(nèi)容取決于你的頁(yè)面編碼,比如可以是GBK,UTF8等。這樣上面兩個(gè)問(wèn)題就可以解決了。
        2. 導(dǎo)出為文件:其實(shí)這個(gè)功能除了中文支持外還有很多其它問(wèn)題,比如它會(huì)將Html標(biāo)簽一起導(dǎo)出、只導(dǎo)出顯示的內(nèi)容,但如果對(duì)table進(jìn)行了decorator,decorator后的內(nèi)容無(wú)法導(dǎo)出。如果想要將中文正確導(dǎo)出,需要修改DisplayTag源代碼。
        下載相同版本的源代碼,在org.displaytag.export.ExcelView.java文件中找到getMimeType()方法,將此方法修改為 return "application/vnd.ms-excel;charset=GB2312";,修改后導(dǎo)出數(shù)據(jù)的速度會(huì)慢很多,不過(guò)將就吧。
        3. 新版的DisplayTag1.1添加了對(duì)一次取部分?jǐn)?shù)據(jù)的支持,相關(guān)的標(biāo)簽包括partialList和size,需要設(shè)置partialList="true"和size的大小。具體怎么用偶還沒(méi)研究。



    displaytag.properties的寫(xiě)法

    #For a list of settings you can customize, see
    # http://displaytag.sourceforge.net/configuration.html

    basic.empty.showtable=true
    paging.banner.onepage=
    export.pdf=true
    basic.msg.empty_list=\u6ca1\u6709\u663e\u793a\u7ed3\u679c\u3002
    basic.msg.empty_list_row=<tr class="empty"><td colspan="0">\u6ca1\u6709\u663e\u793a\u7ed3\u679c\u3002</td></tr></tr>
    export.banner=<div class="exportlinks">\u5bfc\u51fa\u9009\u9879\uff1a{0}</div>
    paging.banner.no_items_found=<span class="pagebanner">\u6ca1\u6709\u627e\u5230{0}\u8bb0\u5f55\u3002</span>
    paging.banner.one_item_found=<span class="pagebanner">\u5171\u627e\u5230\u4e00\u6761{0}\u8bb0\u5f55\u3002</span>
    paging.banner.all_items_found=<span class="pagebanner">\u5171\u627e\u5230{0}\u6761\u8bb0\u5f55\uff0c\u663e\u793a\u6240\u6709\u8bb0\u5f55\u3002</span>
    paging.banner.some_items_found=<span class="pagebanner">\u5171\u627e\u5230{0}\u6761\u8bb0\u5f55\uff0c\u5f53\u524d\u663e\u793a\u4ece\u7b2c{2}\u6761\u81f3\u7b2c{3}\u6761\u3002</span>
    paging.banner.full=<span class="pagelinks">[<a href="{1}">\u9996\u9875</a>/<a href="{2}">\u4e0a\u4e00\u9875</a>]{0}[<a href="{3}">\u4e0b\u4e00\u9875</a>/<a href="{4}">\u5c3e\u9875</a>]</span>
    paging.banner.first=<span class="pagelinks">[\u9996\u9875/\u4e0a\u4e00\u9875] {0}[<a href="{3}">\u4e0b\u4e00\u9875</a>/<a href="{4}">\u5c3e\u9875</a>]</span>
    paging.banner.last=<span class="pagelinks">[<a href="{1}">\u9996\u9875</a>/<a href="{2}">\u4e0a\u4e00\u9875</a>]{0} [\u4e0b\u4e00\u9875/\u5c3e\u9875]</span>
    paging.banner.page.link=<a href="{1}" title="\u8f6c\u5230\u7b2c{0}\u9875">{0}</a>




    名稱: ?4C.ESL | .↗Evon
    口號(hào): 遇到新問(wèn)題?先要尋找一個(gè)方案乄而不是創(chuàng)造一個(gè)方案こ
    mail: 聯(lián)系我


    主站蜘蛛池模板: 国产zzjjzzjj视频全免费| 亚洲综合日韩中文字幕v在线| 丁香六月婷婷精品免费观看| 好看的亚洲黄色经典| 无码人妻一区二区三区免费| 理论秋霞在线看免费| 亚洲一区中文字幕久久| 国产又粗又猛又爽又黄的免费视频| 国产精品九九久久免费视频| 亚洲剧场午夜在线观看| 亚洲不卡AV影片在线播放| 8090在线观看免费观看| 免费无码一区二区| 亚洲伦理一二三四| 亚洲一区二区三区自拍公司| 岛国片在线免费观看| 拍拍拍无挡免费视频网站| 亚洲成AV人影片在线观看| 亚洲成A∨人片在线观看不卡| 免费黄网在线观看| 99久久国产免费中文无字幕| 黄网站在线播放视频免费观看| 亚洲伊人tv综合网色| 国产性爱在线观看亚洲黄色一级片| 99久久99久久精品免费看蜜桃 | 久久精品免费一区二区喷潮| fc2免费人成在线视频| 亚洲人成电影网站色www| 亚洲一区二区中文| 自拍偷自拍亚洲精品第1页| 啦啦啦手机完整免费高清观看| 日本免费中文字幕| 男女猛烈无遮掩视频免费软件| 亚洲乱码一二三四区乱码| 亚洲精品无码午夜福利中文字幕| 国产精品四虎在线观看免费| 91成人免费观看网站| 日本免费一区二区三区四区五六区| 日韩在线视频播放免费视频完整版 | 日本中文字幕免费看| 亚洲七久久之综合七久久|