【问题标题】:Unable to Export PDF, CSV, EXCEL in Display Tag无法在显示标签中导出 PDF、CSV、EXCEL
【发布时间】:2013-06-28 08:19:44
【问题描述】:

我正在为我的 Liferay portlat 应用程序使用 struts2、spring3、hibernate。

我用的是Display Tag 1.2版本,下载了displaytag-portlet、displaytag、displaytag-export-poi。

我还创建了 displaytag.properties 文件并在其中添加了以下行。

factory.requestHelper=org.displaytag.portlet.PortletRequestHelperFactory.

一切运行良好。分页、显示、排序都运行良好。但是如果我把 export="true" 放在<display:table> 中,那么它会显示我转换 pdf、csv、Excel、rtc 的链接..

但是当我点击任何像 CSV 这样的链接时,它会给我一个错误。

08:15:32,191 错误 [http-bio-8080-exec-17][render_portlet_jsp:154] 异常:[.TableTag] 在返回导出的数据之前无法重置响应。您没有使用导出过滤器。确保在 display:table 之前没有使用其他 jsp 标签,或参考 displaytag 文档了解如何配置导出过滤器(需要 j2ee 1.3)。 在 org.displaytag.tags.TableTag.writeExport(TableTag.java:1538) 在 org.displaytag.tags.TableTag.doExport(TableTag.java:1454) 在 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>   

【问题讨论】:

    标签: jsp struts2 liferay portlet displaytag


    【解决方案1】:

    我能想到两种解决方案

    1. 安德烈亚说了什么 在 web.xml 中你的 struts2 过滤器之前添加这行代码

      <filter>
        <filter-name>ResponseOverrideFilter</filter-name>
        <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
      </filter>
      
    2. 如果您使用多个表,请增加 JSP 的页面缓冲区大小

       <%@ page buffer = "16kb" %>
      

    您可以尝试将缓冲区大小增加到 32kb 或 64kb 并检查它是否有效。

    【讨论】:

      【解决方案2】:

      错误可能出在web.xml 中你没有写的部分。

      我猜你可能已经声明了

      • Struts2 StrutsPrepareAndExecuteFilter(如果 S2 版本 FilterDispatcher)
      • DisplayTag ResponseOverrideFilter

      在这种情况下,顺序错误,您只需将 DisplayTag 过滤器放在 Struts2 过滤器之前。

      【讨论】:

      • 首先我做了这些事情......仍然是同样的问题......我按照你的建议重新排序......但是失败了......
      • yessssssss...我在这尝试了 2 天.....我实施了来自网上冲浪的大部分建议,但失败了dddddd
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      相关资源
      最近更新 更多