`
jsczxy2
  • 浏览: 1273718 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

[转]Displaytag标签库配合jsp建立页面table并分页

    博客分类:
  • java
阅读更多

Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等,反正我在做项目时需要的功能它都给我提供了,而且使用起来非常的方便。能够大大减少代码量。
介个是Display Tag的官方网站http://displaytag.sourceforge.net

首先当然是要下载它的jar包了,这里可以下载到最新的版本。将jar包放到WEB-INF的lib文件夹下。另外还需要两个辅助包:apache的commons-lang和standard包,更多的辅助包可以在这里下载

在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 ); 
%>

当我们想在jsp页面上显示这个list时,我们只需要写一句话
<display:table name="test" />
display tag会自动生成一个table

如果list是从控制层抛出来的,name可使用EL表达式表示
<display:table name="${test}" />

这是最简单的display tag的使用,我们可以给它加上样式等,也可以定义显示的列,下面的table显示复杂一些
<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参数,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标签中添加一项pagesize="每页显示行数",如
<display:table name="test" pagesize="10"/>

2. 对列排序
display tag可对列进行排序,就是点击列名,对该列的数据进行排序。你只需对想要排序的列添加 sort="true" 就OK,如下面的代码可对前三列进行排序。在display:table中添加defaultsort="列数",可默认对指定的列排序。
<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排序,可以在display:table之间添加一段代码:
<display:setProperty name="sort.amount" value="list"/>

3. 导出数据
在display:table中添加export="true",看看会出现什么!Display Tag默认会提供三种数据导出方式:CSV、Excel、XML 。
另外Display Tag还可以导出为PDF格式,在http://prdownloads.sourceforge.net/itext/下载一个辅助包iText.jar,copy到lib目录下,然后在display:table之间添加一段代码:
<display:setProperty name="export.pdf" value="true"/>,大功告成。

4. Display Tag的属性设置
前面所说的display:setProperty 是一种改变Display Tag属性的方法,但是在每个jsp中都要写太麻烦了。
Display Tag中设置了很多默认的属性,它有一个专门的属性文件,是在它的jar包中的displaytag/properties/TableTag.properties
想要改变它的默认属性,我们可以在WEB-INFclasses下新建一个文件displaytag.properties,仿照TableTag.properties中属性的格式设置需要修改的属性。
TableTag.properties中的# messages中设置的是显示在页面上的提示信息。默认是英文的,我们可以把它改为中文的。不过这里只能使用unicode,就是说中文字符必须转换为unicode码,这个可以使用jdk自带的native2ascii.exe进行转换。

5. 其它功能
DisplayTag还有一些很实用的小功能,这里提两个。一个是对数据的Format,这是1.1版本添加的新功能,可以使用标签的方式格式化时间、数字、字符串。比如日期,在需要格式化的column标签中添加format="{0,date,yyyy-MM-dd}",第一个参数为格式化的数据序号,第二个参数是数据类型,数字为number,第三个参数为数据格式。
另外一个功能是对table数据的合计功能。在table标签中添加 decorator="org.displaytag.decorator.TotalTableDecorator",然后在想要进行合计的数据列的column标签中添加 total="true",该列就可以被计算总数了。但这个功能有个缺点,不能用在有分页的时候,它只能合计第一页的数据。

DisplayTag的不足 初次使用DisplayTag的人可能会觉得惊喜,但是用久了会发现很多问题,最大的问题是对中文的支持不好,比如如果查询条件中有中文,就无法翻页,无法对中文排序,将中文导出为指定文件时出现乱码等等。这些问题有时候会让人很郁闷,有时候逼得你要去修改它的源代码。下面是对以上几个问题的解决方法:
1. 对于中文无法翻页、排序,最简单的办法是修改Tomcat下的server.xml文件。找到HTTP的Connector标签,在里面添加一项URIEncoding="...",引号里面的内容取决于你的页面编码,比如可以是GBK,UTF8等。这样上面两个问题就可以解决了。
2. 导出为文件:其实这个功能除了中文支持外还有很多其它问题,比如它会将Html标签一起导出、只导出显示的内容,但如果对table进行了decorator,decorator后的内容无法导出。如果想要将中文正确导出,需要修改DisplayTag源代码。
下载相同版本的源代码,在org.displaytag.export.ExcelView.java文件中找到getMimeType()方法,将此方法修改为 return "application/vnd.ms-excel;charset=GB2312";,修改后导出数据的速度会慢很多,不过将就吧。
3. 新版的DisplayTag1.1添加了对一次取部分数据的支持,相关的标签包括partialList和size,需要设置partialList="true"和size的大小。具体怎么用偶还没研究。

分享到:
评论

相关推荐

    displaytag-1.1.1标签库及其使用方法.rar

    DisplayTag 1.1.1是该库的一个版本,它包含了一系列预定义的JSP标签,使得创建复杂的、可分页、可排序、可导出的表格变得简单易行。在本篇中,我们将深入探讨DisplayTag 1.1.1的核心功能和使用方法。 首先,...

    displaytag 分页模版资料 JSP

    DisplayTag是一款功能强大的开源JSP标签库,专为表格展示和分页设计,极大地简化了在Web应用中处理复杂表格和实现分页的功能。在Java Web开发中,DisplayTag能够帮助开发者快速创建出美观且易用的数据展示页面,提高...

    DisplayTag标签使用说明

    DisplayTag 的基本用法是通过`&lt;display:table&gt;`标签来展示数据列表。例如,当你有一个名为`test`的列表,你可以直接使用该标签来显示列表中的所有对象属性: ```jsp ("test", new ReportList(6));%&gt; &lt;display:table...

    displaytag标签的使用

    DisplayTag 是一个强大的开源 JSP 标签库,专门用于处理网页中的表格展示。它提供了丰富的功能,如分页、数据导出、列排序和分组等,极大地简化了网页表格的开发工作。要使用 DisplayTag,首先需要从其官方网站...

    Displaytag实现分页

    - 在 JSP 页面中,需要引入 Displaytag 的标签库,通过 `&lt;%@ taglib uri="http://displaytag.sf.net" prefix="display" %&gt;` 指令。 - 然后,使用 `&lt;display:table&gt;` 标签来展示数据。例如,如果你在控制器中设置了...

    jsp中标签库的使用

    使用DisplayTag库需要在JSP页面中引入对应的标签库,这通常通过`&lt;%@ taglib %&gt; `指令完成。例如: ```jsp &lt;%@ taglib uri="http://displaytag.sourceforge.net/dtd" prefix="display" %&gt; ``` 这里的`uri`指定了标签...

    jsp分页标签,servlet技术实现

    这些标签库通过在JSP页面中插入特定的标签,可以轻松地创建分页链接和显示分页信息。例如,`&lt;display:table&gt;`标签可以用来显示数据库查询结果,并自动处理分页。在使用时,只需设置相关属性,如数据源、每页显示条目...

    displaytag 一个后台管理的分页组件

    然后,你可以在JSP页面中使用DisplayTag标签库,例如`&lt;display:table&gt;`,并指定数据源、属性、排序和分页参数。以下是一个简单的示例: ```jsp &lt;display:table name="yourDataList" pagesize="10"&gt; &lt;/display:...

    自己整理的DisplayTag标签的使用

    DisplayTag作为一款功能强大的标签库,为JSP页面上的Table提供了丰富的处理手段,包括分页、数据导出、分组、列排序等特性,极大地简化了开发者的工作流程,提升了数据展示的灵活性和用户体验。 #### DisplayTag...

    Struts2中使用displaytag标签总结

    接着,在JSP页面上,可以使用`&lt;%@ taglib %&gt; `指令引入DisplayTag的标签库。 `displaytag_zh_CN.properties`和`displaytag.properties`是DisplayTag的国际化资源文件。前者是中文版本,后者是默认的英文版本。这些...

    JSP分页插件及其详解

    2. 在JSP页面上,使用DisplayTag的`&lt;display:table&gt;`标签来显示数据并设置分页。例如: ```jsp &lt;display:table name="yourDataList" pagesize="10"&gt; 列1"/&gt; 列2"/&gt; &lt;/display:table&gt; ``` 这里的`name`属性指定了...

    Struts2 DisplayTag 分页

    3. **创建JSP页面**:在JSP页面中引入DisplayTag的标签库,然后使用`&lt;display:table&gt;`标签来显示数据并实现分页。设置`id`属性用于引用Action中的数据,`export`属性可以控制是否导出数据,`pagesize`属性定义每页...

    displaytag标签使用

    最基本的使用方式是在JSP页面中设置`&lt;display:table&gt;`标签,将一个集合对象(如List)赋值给`name`属性,DisplayTag会自动遍历集合中的每个对象,显示其所有公共getter方法对应的属性。例如: ```jsp ( "test", ...

    displaytag标签相关文档、源码、实例

    DisplayTag提供了一系列的JSP标签,如`&lt;display:table&gt;`、`&lt;display:column&gt;`、`&lt;display:export&gt;`等,这些标签用于构建动态表格。例如,`&lt;display:table&gt;`用于定义一个表格,可以指定数据源(通常是一个集合),`...

    displaytag jar包 ,一个在表现层分页的标签的jar包

    - **标签使用**:在JSP页面中引入DisplayTag的标签库,并在表格区域使用相应的标签,如`&lt;display:table&gt;`、`&lt;display:column&gt;`等。 - **配置设置**:在web.xml或displaytag.properties中设置默认属性,如分页大小...

    displaytag 分页的简单例子(附源代码)

    2. 在JSP页面中引入DisplayTag标签库。 3. 创建数据模型,可能是一个简单的Java Bean,包含要展示的属性。 4. 在控制器中处理请求,从数据库或其他数据源获取数据,并将数据放入模型对象中。 5. 将模型对象传递给JSP...

    displaytag分页jar包和使用说明

    DisplayTag是Java Web开发中的一款强大且功能丰富的表格和分页控件库,它极大地简化了在JSP页面中处理复杂表格和实现分页的工作。这个压缩包文件包含的就是DisplayTag的相关jar包以及可能的使用说明文档,对于开发...

Global site tag (gtag.js) - Google Analytics