Pradip Bhatt
Pradip Bhatt

Reputation: 658

Unable to Export PDF, CSV, EXCEL in Display Tag

I am using struts2, spring3, hibernate for my Liferay portlat application.

I used Display Tag 1.2 version and download displaytag-portlet, displaytag,displaytag-export-poi.

I also created displaytag.properties file and also add following line in it.

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

All is running well. Pagination, display, sorting all running well. But if I put export="true" in <display:table> then it displays me link for convert pdf, csv, Excel, rtc ..

But when I clicked on any Link like CSV it will gives me an error.

08:15:32,191 ERROR [http-bio-8080-exec-17][render_portlet_jsp:154] Exception: [.TableTag] Unable to reset response before returning exported data. You are not using an export filter. Be sure that no other jsp tags are used before display:table or refer to the displaytag documentation on how to configure the export filter (requires 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) at org.apache.jsp.pages.pim.employee.searchEmployee_jsp._jspService(searchEmployee_jsp.java:509) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

What is the solution for this?

I also add filter in web.xml like:

<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>   

Upvotes: 0

Views: 3072

Answers (2)

Ksheetij Saini
Ksheetij Saini

Reputation: 316

There are two solutions I can think of

  1. What Andrea said Add this line of code before your struts2 filter in web.xml

    <filter>
      <filter-name>ResponseOverrideFilter</filter-name>
      <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
    </filter>
    
  2. If your using multiple tables, increase the page buffer size of the JSP

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

You could try increasing your buffer size to 32kb or 64kb and check if it works.

Upvotes: 1

Andrea Ligios
Andrea Ligios

Reputation: 50281

The error is probably in the portion of web.xml that you don't have written.

I guess you may have declared

  • Struts2 StrutsPrepareAndExecuteFilter (or FilterDispatcher if S2 version < 2.1.x)
  • DisplayTag ResponseOverrideFilter

In this case, the order is wrong, and you need to simply put the DisplayTag filter before the Struts2 filter.

Upvotes: 0

Related Questions