2013-06-28 26 views
0

我正在爲我的Liferay portlat應用程序使用struts2,spring3,hibernate。無法在顯示標籤中導出PDF,CSV和EXCEL

我使用了Display Tag 1.2版本並下載了displaytag-portlet,displaytag,displaytag-export-poi。

我還創建了displaytag.properties文件,並在其中添加以下行。

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

一切運行良好。分頁,顯示,排序全部運行良好。但是,如果我把出口=「真」<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)。 at org.displaytag.tags.TableTag.writeExport(TableTag.java:1538) at 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

該錯誤可能是你不寫的的web.xml部分。

我猜你可能已經宣告

  • Struts2的StrutsPrepareAndExecuteFilter(或FilterDispatcher如果S2版本<的2.1.x)
  • DisplayTag ResponseOverrideFilter

在這種情況下,順序是錯誤的,你需要簡單地把DisplayTag過濾器之前 Struts2過濾器。

+0

首先我做了這件事......還是同樣的問題......我根據你的建議重新排序...... 但是失敗.... –

+0

同樣的例外? –

+0

yessssssss ...我嘗試了2天在這.....大多數來自網上衝浪的建議我實現了,但失敗了dddddd –

1

有兩個解決方案,我能想到的

  1. 什麼安德烈說 之前在網絡您Struts2的過濾器添加這行代碼。XML

    <filter> 
        <filter-name>ResponseOverrideFilter</filter-name> 
        <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class> 
    </filter> 
    
  2. 如果您使用多個表,增加了JSP

    的頁面緩衝區大小
    <%@ page buffer = "16kb" %> 
    

你可以嘗試增加你的緩衝區大小爲32KB或64KB,並檢查是否正常工作。