1

私のアプリケーションでは、Primefaces DataTable のレコードを検索するためにグローバル フィルターを使用しており、同じ DataTable に DataExporter を適用しています。

レコードを検索してエクスポートすると、フィルタリングされたリストではなく、データの完全なリストが返されます。

私の開発環境は次のとおりです。Java 6.0、Primefaces 3.2、JSF2.1、GlassFish Server 3.1.2、Netbeans 7.1.1


私のdataTableとdataExporterコードの下に参加しました。

私のdataTableコードは::

 <p:dataTable value="#{personnelController.allItems}" 
                                     emptyMessage="#{bundle.PersonnelEmpty}"
                                     selectionMode="single"
                                     dblClickSelect="false"
                                     var="item"
                                     id="tbl"
                                     rowKey="#`enter code here`{item.id}"
                                     sortBy="#{item.lastName}"
                                     sortOrder="ascending"
                                     widgetVar="itemTable"
                                     paginator="true"
                                     paginatorPosition="bottom"
                                     paginatorAlwaysVisible="false"
                                     currentPageReportTemplate="Page {currentPage} of {totalPages}"
                                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                                     rows="10"
                                     >
                            <f:facet name="header">  
                                <p:outputPanel>  
                                    <h:outputText value="#{bundle.GlobalFilterPrompt}" />  
                                    <p:inputText id="globalFilter" 
                                                 onkeyup="itemTable.filter()" 
                                                 style="width:150px;" 
                                                 />  
                                    <p:watermark for="globalFilter" value="#{bundle.GlobalFilterWatermark}" />
                                </p:outputPanel>  
                            </f:facet>  
                            <p:ajax event="rowSelect" listener="#{personnelController.onRowSelectNavigate}" /> 

                            <p:column 
                                sortBy="#{item.lastName}"
                                filterBy="#{item.lastName}"
                                filterStyle="display: none;"
                                >
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.PersonnelTitle_lastName}"/>
                                </f:facet>
                                <h:outputText value="#{item.lastName}"/>
                            </p:column>
                            <p:column 
                                sortBy="#{item.firstName}"
                                filterBy="#{item.firstName}"
                                filterStyle="display: none;" 
                                >
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.PersonnelTitle_firstName}"/>
                                </f:facet>
                                <h:outputText value="#{item.firstName}"/>
                            </p:column>
                            <p:column 
                                sortBy="#{item.location.name}"
                                filterBy="#{item.location.name}"
                                filterStyle="display: none;"
                                >
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.PersonnelTitle_locations}"/>
                                </f:facet>
                                <h:outputText value="#{item.location.name}"/>
                            </p:column>
                            <p:column 
                                sortBy="#{item.department.name}"
                                filterBy="#{item.department.name}"  
                                filterStyle="display: none;"
                                >
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.PersonnelTitle_departments}"/>
                                </f:facet>
                                <h:outputText value="#{item.department.name}"/>
                            </p:column>

                        </p:dataTable>

dataTable の外部からテーブル データを次のようにエクスポートしています::

 <h:commandLink>  
      <p:graphicImage value="#{resource['images:excel.png']}" />  
      <p:dataExporter type="xls" target=":personnel:tbl" fileName="personnel" />  
 </h:commandLink>  

私が何か間違ったことをしている場合は、私に提案してください。

4

2 に答える 2

2

これはユーザーテーブルの私の例です:

<p:dataTable id="table" value="#{myBean.users}" var="usr" rowKey="#{usr.username}" widgetVar="usrwv">
        <f:facet name="header">  
            <p:outputPanel>  
                 <h:outputText value="Search all fields:" />  
                 <p:inputText id="globalFilter" onkeyup="usrwv.filter()" style="width:150px" />  
            </p:outputPanel>  
        </f:facet>
        <p:column headerText="Username" sortBy="#{usr.username}" filterBy="#{usr.username}">
               <f:facet name="header">  
                     Username
               </f:facet>
               <h:outputText value="#{usr.username}"/>
        </p:column>
        <p:column headerText="Role" sortBy="#{usr.role}" filterBy="#{usr.role}">
                <f:facet name="header">  
                     Role
                </f:facet>
                <h:outputText value="#{usr.role}"/>
        </p:column>
        <f:facet name="footer">
                <h:commandLink>  
                     <p:graphicImage value="/resources/images/excel.ico" title="myExcel"/>
                     <p:dataExporter type="csv" target="table" fileName="all_users"/>  
                </h:commandLink>
        </f:facet>
</p:dataTable>

また、エクスポーターとデータテーブルを 2 つの異なる形式にしています。同じ形にしてみてください。これはうまくいくはずです。

于 2012-07-11T05:52:38.023 に答える