1

在我的应用程序中,我使用全局过滤器来搜索 Primefaces DataTable 中的记录,并且我在同一个 DataTable 上应用了 DataExporter。

当我搜索任何记录并进行导出时,它会返回一个完整的数据列表而不是过滤列表。

我的开发环境是:java 6.0、Primefaces 3.2、JSF2.1、GlassFish Server 3.1.2、Netbeans 7.1.1


在我的 dataTable 和 dataExporter 代码下方列出。

我的数据表代码是::

 <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>

我正在将数据表外部的表数据导出为::

 <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>

此外,您将导出器和数据表放在两种不同的形式中。尝试将它们放在相同的形式中。这应该有效。

于 2012-07-11T05:52:38.023 回答
0

在 pom.xml 中:

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>3.10.1</version>
</dependency>

<dependency>
   <groupId>com.itextpdf</groupId>
   <artifactId>itextpdf</artifactId>
   <version>5.5.3</version>
</dependency>

并替换:

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

 <h:commandLink>  
      <h:graphicImage value="#{resource['images:excel.png']}" />  
      <p:dataExporter type="xls" target=":personnel:tbl" fileName="personnel" />  
 </h:commandLink>
于 2014-12-07T04:51:51.047 回答