我正在使用struts2,spring3,hibernate作为我的Liferay portlat应用程序。
我使用Display Tag 1.2版本并下载displaytag-portlet,displaytag,displaytag-export-poi。
我还创建了displaytag.properties文件,并在其中添加了以下行。
factory.requestHelper=org.displaytag.portlet.PortletRequestHelperFactory.
一切运行良好。分页,显示,排序都运行良好。但如果我在<display:table>
中加上 export =“true”,则会显示转换为pdf,csv,Excel,rtc的链接。
但是当我点击任何像CSV这样的链接时,它会给我一个错误。
08:15:32,191 ERROR [http-bio-8080-exec-17] [render_portlet_jsp:154]例外:[。TabTag]无法在返回导出数据之前重置响应。您没有使用导出过滤器。确保在display:table之前没有使用其他jsp标记,或者参考displaytag文档,了解如何配置导出过滤器(需要j2ee 1.3)。 在org.displaytag.tags.TableTag.writeExport(TableTag.java:1538) 在org.displaytag.tags.TableTag.doExport(TableTag.java:1454) at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1309) 在org.apache.jsp.pages.pim.employee.searchEmployee_jsp._jspService(searchEmployee_jsp.java:509) 在org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
这是什么解决方案?
我还在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>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
答案 0 :(得分:1)
我能想到两种解决方案
Andrea说的话 在web.xml
中添加之前 struts2过滤器中的代码<filter>
<filter-name>ResponseOverrideFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
如果您使用多个表,请增加JSP的页面缓冲区大小
<%@ page buffer = "16kb" %>
您可以尝试将缓冲区大小增加到32kb或64kb并检查它是否有效。
答案 1 :(得分:0)
错误可能在web.xml
中你没有写过的部分。
我猜你可能已宣布
在这种情况下,订单错误,您需要在Struts2过滤器之前简单地将DisplayTag过滤器 放在 之前。