当前位置: 首页 > 知识库问答 >
问题:

DataExporter不适用于Primefaces 3.2中的过滤数据表

申屠宗清
2023-03-14

在我的应用程序中,我使用全局过滤器搜索Primefaces数据表中的记录,并在同一数据表上应用了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>

我从dataTable外部导出表数据为:

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

如果我做错了什么,请建议我。

共有2个答案

章晋鹏
2023-03-14

在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>
司徒经纶
2023-03-14

这是我的usertable示例:

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

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

 类似资料:
  • 我有一个自定义的dataTable标记,我在所有视图中都使用它,它位于这里:src/main/webapp/WEB-INF/tags/custom\u dataTable。xhtml 我的问题是,如果我对一个或多个可过滤列进行过滤,并使用dataExporter进行导出,则列过滤会丢失,因此导出会忽略这些额外的过滤。我怎样才能改变这个? 这是自定义datatable标记的源: 我的Primefac

  • 我试图理解Hibernate过滤器,我认为即使查询不是从过滤的实体开始,也可以应用过滤器,如果我只是加入它。 我的实体: 过滤器通过拦截器启用,为了安全起见,从数据库中获取参数列表。 当我执行这样的查询时: 过滤器被应用了。但是我也希望当我的查询从模块部分开始时应用过滤器: 在上述查询中,没有应用筛选器。 ModuleSect实体中的学术类为null,但我也有其他实体不为空,其中上述情况不起作用。

  • 问题内容: 嗨,我正在用React钩子编程一个页面,并且试图将从服务器获取的数据设置为状态。怎么它不起作用。我从服务器获取数据,但无法将其映射到状态。任何想法可能是什么问题? 来自服务器的数据 问题答案: 是async方法,因此您将无法在其下获取更新的数据。 否则您的代码是好的,如果您循环并显示它,它将反映在DOM中 运行下面的代码片段,并检查HTML和console两者,这将清除流程。

  • 问题内容: 据我了解,CSS过滤器应该可以在Chrome中的任何地方使用,但是我无法使它们适用于SVG元素。 在 所有 大多数浏览器中 都 可以正常工作: 但是,这在Chrome中不起作用: 这是一个例子: …这是一个小提琴:https : //jsfiddle.net/LtffLagn/2/ 问题答案: 所有归功于@Robert Longson,他给出了答案: CSS过滤器无法应用于Chrome

  • 我的应用程序只需要支持一个URL。喜欢http://.../service/api.要执行的操作取决于“操作”请求参数 为了处理这个问题,我创建了以下控制器 缺少ACTION参数时将调用 /view。对于前两个请求,我配置了OAuth身份验证,后者即 /view将使用formlogin。 我已经创建了一个过滤器,在那里我检查ACTION参数,如果丢失,我将请求转发到 /view处理程序。 下面是过

  • 问题内容: 我已经创建了一个表,并且正在使用http来加载表中的数据。因此,每次单击时,我的表数据都在变化,但是在表中看不到更新的数据。我创建了一个样本Plunker供参考。在我的项目中,当我单击“重新加载新数据”时,表中的数据已更改,但是在2-3次单击后,它没有更改。有人知道,如何解决它。 问题答案: ngTable指令有问题。仅在更改时更新。看看这个pl。我将$ scope [‘tablePa