Невозможно экспортировать PDF, CSV, EXCEL в отображаемом теге

Я использую struts2, spring3, hibernate для своего портлатного приложения Liferay.

Я использовал версию 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] Невозможно сбросить ответ перед возвратом экспортированных данных. Вы не используете экспортный фильтр. Убедитесь, что никакие другие теги jsp не используются перед display:table, или обратитесь к документации по 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>   

person Pradip Bhatt    schedule 28.06.2013    source источник


Ответы (2)


Есть два решения, которые я могу придумать

  1. Что сказала Андреа Добавьте эту строку кода перед фильтром struts2 в web.xml

    <filter>
      <filter-name>ResponseOverrideFilter</filter-name>
      <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
    </filter>
    
  2. Если вы используете несколько таблиц, увеличьте размер буфера страницы JSP.

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

Вы можете попробовать увеличить размер буфера до 32 КБ или 64 КБ и проверить, работает ли он.

person Ksheetij Saini    schedule 29.04.2015

Ошибка, вероятно, в той части web.xml, которую вы не написали.

Я думаю, вы, возможно, заявили

  • Struts2 StrutsPrepareAndExecuteFilter (или FilterDispatcher, если версия S2 ‹ 2.1.x)
  • DisplayTag ResponseOverrideFilter

В этом случае порядок неправильный, и вам нужно просто поместить фильтр DisplayTag перед фильтром Struts2.

person Andrea Ligios    schedule 01.07.2013
comment
Сначала я сделал это... Все та же проблема... Я переупорядочил по вашему предложению... Но не удалось.... - person Pradip Bhatt; 09.07.2013
comment
yessssssss ... Я пытался 2 дня в этом ..... Большинство предложений от сетевого серфинга я реализовал, но не удалосьdddddd - person Pradip Bhatt; 10.07.2013