java Displaytag 导出选项不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/842845/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-29 14:01:03  来源:igfitidea点击:

Displaytag export option is not working

javastruts2

提问by Nirmal

I am using Displaytag framework for pagination & exporting purpose. In that i am also using Strut2Tiles Integration.

我正在使用 Displaytag 框架进行分页和导出。我也在使用 Strut2Tiles 集成。

Whenever i am calling any action class it will returning me a list & through Displaytag i am successfully displaying record on my page. For that my jsp page's code looks like :

每当我调用任何操作类时,它都会返回一个列表并通过 Displaytag 我成功地在我的页面上显示记录。为此,我的 jsp 页面的代码如下所示:

  <s:set name="selectedPageSize" value="selectedPageSize" scope="request"/>
        <s:set value="accountList" scope="request" name="accountList"/>
            <display:table name="accountList" export="true" class="table" requestURI="" id="accountList" pagesize="${selectedPageSize}" >
            <display:setProperty name="export.pdf" value="true" /> 
            <display:column property="id" sortable="true" class="sort-title"/>
            <display:column property="name" sortable="true"/>
            <display:column property="contactPerson" sortable="true"/>
            <display:column property="phone1" sortable="true"/>
            <display:column property="phone2" sortable="true"/>
            <display:column property="fax" sortable="true"/>
            <display:column property="email" sortable="true"/>
            <display:column property="webSite" sortable="true"/>
            <display:column property="address1" sortable="true"/>
            <display:column property="address2" sortable="true"/>
            <display:column property="countryId.name" title="Country" sortable="true"/>
            <display:column property="stateId.name" title="State" sortable="true"/>
            <display:column property="countryId.name" title="City" sortable="true"/>

            <display:column property="isDeleted" sortable="true"/>

            <display:column title="Delete">
                <s:url id="removeUrl" action="finance/deleteAccount.action">
                    <s:param name="id" value="#attr.accountList.id" />
                </s:url>
                <s:a href="%{removeUrl}" theme="ajax" targets="accountList">Remove</s:a>
            </display:column>

            <display:column  title="Update">
                <s:url id="updateUrl" action="finance/updateAccount.action">
                    <s:param  value="#attr.accountList.id" name="id"/>
                </s:url>
                <s:a href="%{updateUrl}&action=update" targets="accountlist">Update</s:a>
            </display:column>

Actually this page is displaying through tiles configuration.

实际上这个页面是通过磁贴配置显示的。

Here i have enabled the export option, so it is showing me the exporting options like CSV, EXCEL, XML. But whenver i am clicking on that CSV link, my web browser hanged, means nothing is displayed on it

在这里,我启用了导出选项,因此它向我显示了 CSV、EXCEL、XML 等导出选项。但是每当我点击那个 CSV 链接时,我的网络浏览器就会挂起,这意味着上面没有显示任何内容

For that exporting solution i have also added filter in my web.xml. My web.xml looks like:

对于该导出解决方案,我还在 web.xml 中添加了过滤器。我的 web.xml 看起来像:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  <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>

<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/webApplicationContext.xml</param-value>
</context-param>

<welcome-file-list>
    <welcome-file>jsp/welcome.jsp</welcome-file>
</welcome-file-list>

I have also included following list of libraries of displaytag : 1) displaytag-1.2.jar 2) displaytag-export-poi-1.2.jar 3) displaytag-portlet-1.2.jar

我还包括以下 displaytag 库列表:1) displaytag-1.2.jar 2) displaytag-export-poi-1.2.jar 3) displaytag-portlet-1.2.jar

The exception that i am getting is :

我得到的例外是:

2009-05-09 12:02:38,234 DEBUG (org.displaytag.tags.TableTag:1524) - Exportfilter NOT enabled
2009-05-09 12:02:38,312  WARN (org.displaytag.tags.TableTag:63) - 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).
ApplicationDispatcher[/PaginationTry2] PWC1231: Servlet.service() for servlet jsp threw exception
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).

Plz reply, i am stuck with this problem.

请回复,我被这个问题困住了。

回答by A_M

Have you tried re-ordering the filters in your web.xml so that DisplayTag's ResponseOverrideFilter is the first filter in the chain, i.e. before your struts2 filter?

您是否尝试过对 web.xml 中的过滤器重新排序,以便 DisplayTag 的 ResponseOverrideFilter 是链中的第一个过滤器,即在您的 struts2 过滤器之前?

回答by Muhammad Shahid

Configure your displaytag table :

配置您的 displaytag 表:

<display:table name="sessionScope.searchProviderLRSharingList"
id="row"
requestURI="/**ACTION_MAPPING_CALLED_TO_GET_THE_RESULTS**"
...
...
</display:table>

Configure the Filter in your web.xml:

在 web.xml 中配置过滤器:

<filter>
    <filter-name>ResponseOverrideFilter</filter-name>
    <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>

ResponseOverrideFilter ACTION_MAPPING_CALLED_TO_GET_THE_RESULTS

ResponseOverrideFilter ACTION_MAPPING_CALLED_TO_GET_THE_RESULTS