一、简介
可以呈现如table的格式,自行设定排序、分页、导出...等。
二、使用步骤
(1)下载jar包,放到WEB-INF/lib下,另外还需2个辅助包:apache的 commons-lang和standard包。
(2)在web.xml下添加一个filter
<filter>
<filter-name>exportFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
(3)在jsp页面添加一个引用
<%@taglib prefix=”display” uri=”http://displaytag.sf.net” %>
(4)在jsp中进行使用
<display:table id ="X" name="sessionScope.register" export="true" cellspacing="1" cellpadding="1" defaultsort="1" pagesize="7" class="simple">
<display:column property="applyFormNo" title="申请单号" sortable="true"/>
<display:column property="applyFormItem" title="序号" sortable="true"/>
<display:column title="申请客戶" sortable="true">
<c:out value="${X.applyFormDO.applyCustomer}"/>
</display:column>
</display:table>
【 name属性指定资料的来源; export属性指定是否有导出功能; defaultsort="1" 指定按第1列进行排序; pagesize设定每页显示条数;
id属性指定一个变量名X,代表每行的资料;
<display:column>的property属性,指定的是X对象内部存在的属性;同时也可以添加非属性的列(如申请用户),但是要对该列指定值;
title属性是列的标题; sortable设定该列是否可以排序。】
三、问题
(1)地址栏越来越长,报res://ieframe.dll/http_400_webOC.htm错
问题:display分页,页面跳转多次,最后无法显示。
原因:display默认使用地址栏来传递参数,而且会对参数进行编码处理,当参数过多过长时,容易被截断,导致无法显示。
解决:
方法1、使用excludeParams属性,排除不必要的参数:
<display:table requestURI="AA.do?param1=aaa" excludeParams="param1"> 可以过滤掉参数param1,不然越来越多。
也可以使用excludeParams="*" 过滤掉所有参数。
方法2、使用form属性,通过post方式来传递参数。
<form name="Aform" action="AA.do?param1= aaa" method="post" >
<display:table name="${list}" requestURI="AA.do?param1= aaa"
export="true" form="Aform" id="X" >
<display:column property="B" title="B"/>
<display:column property="C" title="C"/>
</display:table>
</form>
四、displaytag 的export功能,汇出中文乱码
【解决】
解压displaytag-1.2.jar包,找到org/displaytag/properties文件夹中的displaytag.properties文件,复制到项目classpath(即src)下,修改所需的内容。
原本为:export.excel.class=org.displaytag.export.ExcelView
修改为:export.excel.class=org.displaytag.export.excel.ExcelHssfView