Я использую 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>