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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發(fā)
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數(shù)據(jù)加載中……

    Display Tag使用小記

    用了一段時間的Display Tag,覺得非常好用,可在論壇上發(fā)現(xiàn)好像使用這個東東的人挺少的,那偶也來寫篇文章。
        Display Tag Lib是一個標(biāo)簽庫,用來處理jsp網(wǎng)頁上的Table,功能非常強,可以對的Table進(jìn)行分頁、數(shù)據(jù)導(dǎo)出、分組、對列排序等等,反正我在做項目時需要的功能它都給我提供了,而且使用起來非常的方便。能夠大大減少代碼量。
        介個是Display Tag的官方網(wǎng)站
    http://displaytag.sourceforge.net

        首先當(dāng)然是要下載它的jar包了,
    這里可以下載到最新的版本。將jar包放到WEB-INF的lib文件夾下。另外還需要五個輔助包:apache的
    standard.jar
    commons-lang-2.3.jar
    commons-logging-1.0.4.jar
    commons-beanutils-1.8.0-BETA.jar
    commons-collections-3.2.jar包,
    更多的輔助包可以在這里
    下載

    在web.xml下添加一個filter
        <filter>
            <filter-name>exportFilter</filter-name>
            <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
        </filter>

        在jsp頁面做一個引用:
    <%@ 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 );
    %>

        當(dāng)我們想在jsp頁面上顯示這個list時,我們只需要寫一句話
        <display:table name="test" />
        display tag會自動生成一個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>

        如果想要給它加個鏈接也很簡單,下面的代碼給name加了連接,并附帶id參數(shù),email也自動連接到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/
    1. 分頁
        如果想對代碼分頁,只需在display:table標(biāo)簽中添加一項pagesize="每頁顯示行數(shù)",如
    <display:table name="test" pagesize="10"/>

    2. 對列排序
        display tag可對列進(jìn)行排序,就是點擊列名,對該列的數(shù)據(jù)進(jìn)行排序。你只需對想要排序的列添加 sort="true" 就OK,如下面的代碼可對前三列進(jìn)行排序。在display:table中添加defaultsort="列數(shù)",可默認(rèn)對指定的列排序。
    <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)只對當(dāng)前頁進(jìn)行排序,如果想對整個list排序,可以在display:table之間添加一段代碼:
    <display:setProperty name="sort.amount" value="list"/>

    3. 導(dǎo)出數(shù)據(jù)
        在display:table中添加export="true",看看會出現(xiàn)什么!Display Tag默認(rèn)會提供三種數(shù)據(jù)導(dǎo)出方式:CSV、Excel、XML 。
        另外Display Tag還可以導(dǎo)出為PDF格式,在
    http://prdownloads.sourceforge.net/itext/下載一個輔助包iText.jar,copy到lib目錄下,然后在display:table之間添加一段代碼:
    <display:setProperty name="export.pdf" value="true"/>,大功告成。

    4. Display Tag的屬性設(shè)置
        前面所說的display:setProperty 是一種改變Display Tag屬性的方法,但是在每個jsp中都要寫太麻煩了。
        Display Tag中設(shè)置了很多默認(rèn)的屬性,它有一個專門的屬性文件,是在它的jar包中的displaytag/properties/TableTag.properties
        想要改變它的默認(rèn)屬性,我們可以在WEB-INF\classes下新建一個文件displaytag.properties,仿照TableTag.properties中屬性的格式設(shè)置需要修改的屬性。
        TableTag.properties中的# messages中設(shè)置的是顯示在頁面上的提示信息。默認(rèn)是英文的,我們可以把它改為中文的。不過這里只能使用unicode,就是說中文字符必須轉(zhuǎn)換為unicode碼,這個可以使用jdk自帶的native2ascii.exe進(jìn)行轉(zhuǎn)換。

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

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



    posted on 2007-12-03 10:22 々上善若水々 閱讀(2347) 評論(0)  編輯  收藏 所屬分類: JavaWeb

    主站蜘蛛池模板: 香蕉免费一级视频在线观看| 国产无遮挡又黄又爽免费视频| 91精品国产免费久久国语蜜臀| 动漫黄网站免费永久在线观看| 亚洲黑人嫩小videos| jizzjizz亚洲日本少妇| 日本黄色动图免费在线观看| 四虎成人精品一区二区免费网站 | 在线看片人成视频免费无遮挡| 亚洲人成电影网站久久| 国产福利免费视频| 国产亚洲情侣一区二区无| 亚洲午夜一区二区三区| 成人免费视频观看无遮挡| 亚洲AV永久无码精品| 最近中文字幕国语免费完整| 亚洲人成电影青青在线播放| 久久免费视频网站| 又色又污又黄无遮挡的免费视| 污污的视频在线免费观看| 亚洲无砖砖区免费| 亚洲av永久无码精品古装片| 最近中文字幕2019高清免费 | 亚洲日产乱码一二三区别| 久久综合国产乱子伦精品免费| 亚洲日韩乱码中文无码蜜桃| 久久久久久AV无码免费网站| 亚洲乱人伦精品图片| 免费久久精品国产片香蕉| 三年在线观看免费观看完整版中文| 四虎影库久免费视频| 中文字幕免费在线视频| 亚洲国产成a人v在线| 亚洲AⅤ优女AV综合久久久| 男女作爱在线播放免费网站| jiz zz在亚洲| 亚洲美女又黄又爽在线观看| 国产精品视频免费观看| 九九视频高清视频免费观看 | 国产极品粉嫩泬免费观看| 中文字幕视频在线免费观看|