4

ページネーションとエクスポートの目的でDisplaytagフレームワークを使用しています。その中で私はStrut2Tiles統合も使用しています。

アクションクラスを呼び出すと、リストが返され、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>

実際、このページはタイル構成で表示されています。

ここでエクスポートオプションを有効にしたので、CSV、EXCEL、XMLなどのエクスポートオプションが表示されます。しかし、そのCSVリンクをクリックすると、Webブラウザーがハングし、何も表示されないことを意味します。

そのエクスポートソリューションのために、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>

また、displaytagのライブラリの次のリストも含まれています:1)displaytag-1.2.jar 2)displaytag-export-poi-1.2.jar 3)displaytag-portlet-1.2.jar

私が得ている例外は次のとおりです:

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の返信、私はこの問題で立ち往生しています。

4

2 に答える 2

6

DisplayTag の ResponseOverrideFilter がチェーンの最初のフィルター、つまり struts2 フィルターの前になるように、web.xml でフィルターの順序を変更してみましたか?

于 2009-05-14T21:11:53.413 に答える
1

displaytag テーブルを構成します。

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

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

于 2009-12-05T12:55:50.677 に答える