一、要把displaytag加入自己的工程,需要做以下工作:
1. 把displaytag-1.2.jar加入WEB-INF/lib
2. 确认WEB-INF/lib目录中包含以下lib文件:
* commons-logging
* commons-lang
* commons-collections
* commons-beanutils
* log4j
* itext (optional, for pdf/rtf export)
要注意版本的兼容。比较好的方法就是直接从displaytag的例子项目中拷贝这些lib文件。
如果需要把文件导成pdf,excel等还需要把
displaytag-export-poi
jar也导入进来。
解压displaytag-examples-1.2.war之后,
我们使用displatag所需的所有jar包,css文件,国际化资源文件都可以在这里找到,
1.将displaytag-examples-1.2/下的images、img、css三个目录拷到你项目的WebRoot下;
将displaytag-examples-1.2/WEB-INF/classes/下的displaytag.properties文件拷到你项目的src下。
2.将displaytag-examples-1.2/WEB-INF/lib/下的所有jar包拷到你项目的WebRoot\ WEB-INF\lib下
3.在所需要用Displaytag的JSP文件中加入如下内容即可:
a 在Jsp文件的头部加入:
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
b 在<head></head>之间加入如下:
<link rel="stylesheet" type="text/css" href="css/screen.css" />,路径自己注意
c 在显示分页表格的地方加入如下代码:
<display:table name="all" pagesize="5">
<display:column property="cid" title="编号" />
<display:column property="name" title="学生姓名" />
<display:column property="teacher" title="任课老师" />
<display:column property="creditHour" title="学分" />
</display:table>
这是一个例子,至此你已经应用了displaytag
错误:The absolute uri: http://displaytag.sf.net cannot be resolved in
either web.xml or the jar files deployed with this application
web.xml配置
<taglib>
<taglib-uri>http://displaytag.sf.net</taglib-uri>
<taglib-location>displaytag.tld</taglib-location>
</taglib>
3.要是要用到导出功能的话,还需要在web.xml里增加一个过滤器,
<filter>
<filter-name>ResponseOverrideFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
这里我们只用到分页功能,所以这一步可以跳过。
完成以上工作后,在你的工程里创建一个如下的jsp页面试一试吧:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="
http://displaytag.sf.net
" prefix="display" %>
<% request.setAttribute( "test", new TestList(10, false) ); %>
<display:table name="test">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column property="email" />
<display:column property="status" />
<display:column property="description" title="Comments"/>
</display:table>
http://jakarta.apache.org/taglibs/tutorial.html中有更多的使用指南。
最基本的:
<display:table
/>test为你的属性名字,如你上一页使用了request.setAttribute("blog",
blog);然后转向到你要使用分页的页面上,这时你的显示页面就应该是<display:table name="blog" />
这是最简单的应用,我们可以给他加上样式,也可以定义显示的列标题。
<% request.setAttribute( "test", new TestList(10, false) ); %>
<display:table name="test">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column property="email" />
<display:column property="status" />
<display:column property="description" title="Comments"/>
</display:table>
下面我们再给他加上分页的功能,这个才是我们用他的重点,呵呵
如果想对代码分页,只需在display:table标签中添加一项pagesize="每页显示行数",如
<display:table name="test" pagesize
="10"/>
这里还需要注意的是,如果我们的项目使用了struts,URL会是http://*****/****/***.action的形式,
这时候就需要配置一个requestURI="DynamicTreeSelectAction.action"来改变默认的翻页路径。
<display:table name="departmentList" requestURI="DepartmentList.action"
sort="list" pagesize="20" class="ITS">
<display:column property="deptId" titleKey="listDeptPage.deptId.title" />
<display:column property="deptNo" titleKey="listDeptPage.deptNo.title"/>
<display:column property="deptName" titleKey="listDeptPage.deptName.title"/>
<display:column titleKey="listDeptPage.edit.title"
href="DepartmentFind.action" paramId="deptId" paramProperty="deptId"
>Click</display:column>
<display:column
titleKey="listDeptPage.delete.title" href="DepartmentDel.action"
paramId="deptId" paramProperty="deptId"
>Delete</display:column>
</display:table>
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";,修改后导出数据的速度会慢很多,不过将就吧。
下面看一下我这个博客文章管理页面的具体应用:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="
http://displaytag.sf.net
" prefix="display" %>
<%@include
file="header.jsp" %>
<style type="text/css" media="all">
@import url("/blog/admin/css/screen.css");
</style>
<script type="text/javascript">
function del() {
var msg = "您真的确定要删除吗?\n\n请确认!";
if (confirm(msg)==true){
return true;
}else{
return false;
}
}
</script>
<h2>博文管理</h2>
<display:table pagesize="3" requestURI="/servlet/AdminBlogListServlet" >
<display:column property="id" title="编号" sortable="true"/>
<display:column property="title" title="主题"/>
<display:column property="category" title="分类"/>
<display:column property="createdTime" title="日期" sortable="true"/>
<display:column title="操作">
<a
href="/blog/servlet/PreEditBlogServlet?id=${blog.id}"><img
src="/blog/admin/images/edit.gif " border="0"/></a>
<a href="/blog/servlet/DeleteBlogServlet?id=${blog.id}"
onclick="javascript:return del()"><img
src="/blog/admin/images/delete.gif" border="0"/></a>
</display:column>
</display:table>
<%@include
file="footer.jsp" %>
注意事项:
有时候,要是点下一页出现Nothing found to display. ,就在加上requestURI="这里写上你显示列表页"
编号和日期上有个向上和向下的小三角,点击那里可以进行排序。
默认分页,上一页下一页这些是在显示表格的上面的,我们可以通过属性文件来把他改成下面,或者是上下都有。
在src目录下新建一个displaytag.properties属性文件,或者是把到示例程序把这个文件复制过来再修改
paging.banner.placement=bottom
这样分页显示就在表格的下面了。
分享到:
相关推荐
NULL 博文链接:https://wooden-baby.iteye.com/blog/494060
DisplayTag是一个功能强大的开源库,主要用于生成表格和提供分页功能,而Struts2则是一个MVC框架,用于处理用户请求和业务逻辑。将两者整合可以实现高效、美观的分页效果。 首先,我们需要了解Struts2的基本架构。...
display tag 分页例子中用到的有关display tag lib的jar包,把这些jar包拷贝到WEB-INF/lib中例子就可以运行了。 博文链接:https://zhou568xiao.iteye.com/blog/192366
改装后的displayTag分页插件,解决中文问题,内置帮助文档和示例文件及jar包,比较好用,如果不满足你的需求请不要砸砖 补充: csdn附件不能修改,jsp+servlet分页时有bug,请注意查询所有的serlvet不支持带参数,即...
个人学习收集网上资料辛苦整理而成. DisplayTag分页资料整理.chm DisplayTag 分页 chm java taglib
2. **使用 Displaytag 分页** - 在 JSP 页面中,需要引入 Displaytag 的标签库,通过 `<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>` 指令。 - 然后,使用 `<display:table>` 标签来展示数据。...
2. **自定义样式**:同样支持通过CSS自定义分页导航条的样式。 3. **配置灵活**:可以通过配置属性来调整分页显示的数量、是否显示总页数等。 4. **易集成**:由于体积小、依赖少,Pager-taglib很容易集成到任何Java...
displaytag分页模版使用说明书
在提供的资料中,"displaytag分页模版使用说明书.xls"可能包含了一份详细的使用指南,涵盖如何配置DisplayTag,如何在JSP页面中嵌入标签,以及如何实现各种高级功能。这份文档将指导开发者了解DisplayTag的配置文件...
DisplayTag是Java Web开发中的一款强大且功能丰富的表格和分页控件库,它极大地简化了在JSP页面中处理复杂表格和实现分页的工作。这个压缩包文件包含的就是DisplayTag的相关jar包以及可能的使用说明文档,对于开发...
displaytag分页模版
07java培训displaytag分页实例六
DisplayTag分页技术的核心在于其能够自动处理大量数据,将这些数据按页显示,从而提高网页性能和用户体验。以下是关于DisplayTag分页的一些关键知识点: 1. **配置与引入**:首先,你需要在项目中引入DisplayTag库...
这个"一个完美的displaytag分页控件的例子"显然展示了如何有效地利用DisplayTag库来实现一个美观且功能丰富的分页表格。 在JSP(JavaServer Pages)开发中,DisplayTag是一个常用的标签库,它提供了许多预定义的...
DisplayTag 是一个开源的Java库,专为Web应用程序设计,用于创建复杂的表格和分页功能。这个组件在后台管理界面中特别有用,因为它允许开发者通过少量的代码实现强大的数据展示和分页效果。DisplayTag 提供了丰富的...
Displaytag 是一个强大的开源Java库,用于创建复杂的HTML表格,包括分页、排序、过滤等功能。在Web开发中,为了提升用户体验,常常需要在表格中实现鼠标悬停时行变色的效果。由于Displaytag 默认并不支持这个功能,...
DisplayTag 是一个非常受欢迎的开源Java Web开发框架中的分页组件。它以其简洁的使用方式和强大的功能,被广泛应用于各种Web应用项目中,尤其是在处理大量数据展示时,能够有效地提高用户体验,减轻服务器压力。 ...