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

DataExporter不使用Primefaces中dataTable上的列过滤器

浦修文
2023-03-14

我有一个自定义的dataTable标记,我在所有视图中都使用它,它位于这里:src/main/webapp/WEB-INF/tags/custom\u dataTable。xhtml

我的问题是,如果我对一个或多个可过滤列进行过滤,并使用dataExporter进行导出,则列过滤会丢失,因此导出会忽略这些额外的过滤。我怎样才能改变这个?

这是自定义datatable标记的源:

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui">

    <script type="text/javascript">
        $ = jQuery;
            var scrollPos;

            function saveScrollPos() {
                        scrollPos = $(".ui-datatable-scrollable-body").scrollTop();
            }
            function getScrollPos() {
                    $(".ui-datatable-scrollable-body").scrollTop(scrollPos);
            }
    </script>

    <p:dataTable id="#{id}" value="#{value}" var="item" widgetVar="#{widgetVar}"                 
                 draggableColumns="true" filterDelay="1000"
                 styleClass="breakwords"
                 emptyMessage="#{bundle.EmptyMessage}" filteredValue="#{controller.filteredItems}"
                 selectionMode="single" selection="#{controller.selected}"
                 rowKey="#{item.id}"
                 rowStyleClass="#{rowStyleClass}"
                 sortBy="#{sortBy}" sortOrder="#{(sortOrder!=null)?sortOrder:'ascending'}"
                 scrollRows="30" scrollable="true" liveScroll="true" scrollHeight="400"
                 tableStyle="#{tableStyle}"                 
                 >
        <p:ajax event="rowSelect"   update="createButton viewButton editButton deleteButton"/>
        <p:ajax event="rowUnselect" update="createButton viewButton editButton deleteButton"/>
        <f:facet name="header">
            <p:outputPanel >
                <p:inputText id="globalFilter" style="width:150px" onkeyup="PF('#{widgetVar}').filter()" placeholder="Searching..."/>

                <h:commandLink style="float:right">
                    <p:graphicImage name="/images/csv.png" width="24"/>
                    <p:dataExporter type="csv" target="#{id}" fileName="list"/>
                </h:commandLink>

                <h:commandLink style="float:right">
                    <p:graphicImage name="/images/excel.png" width="24"/>
                    <p:dataExporter type="xls" target="#{id}" fileName="list" />
                </h:commandLink>


                <p:commandButton icon="ui-icon-refresh" oncomplete="javascript:window.location.reload();" action="#{controller.refresh}" value="Refresh" style="float:left" />
                <p:commandButton id="toggler" type="button" value="Oszlopok" style="float:left" icon="ui-icon-calculator" />
                <p:columnToggler datasource="#{id}" trigger="toggler" >
                    <p:ajax event="toggle" listener="#{controller.getControllerDelegate().onToggle}" />
                </p:columnToggler>
            </p:outputPanel>
        </f:facet>
        <ui:insert />
    </p:dataTable>
</ui:composition>

我的Primefaces版本:

    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>6.2</version>
        <type>jar</type>
    </dependency>

共有1个答案

夹谷斌蔚
2023-03-14

PrimeFaces出口商应该处理这个问题。如果数据表的支持bean值放在RequestScoped中,这可能会导致这种特殊行为——在触发导出时丢失过滤器值。解决方案是将过滤和其他表属性的支持bean值放在ViewScoped下。

 类似资料:
  • 在我的应用程序中,我使用全局过滤器搜索Primefaces数据表中的记录,并在同一数据表上应用了DataExporter。 当我搜索任何记录并进行导出时,它会返回给我一个完整的数据列表,而不是过滤列表。 我的开发环境是:java 6.0、Primefaces 3.2、JSF2.1、GlassFish Server 3.1.2、Netbeans 7.1.1 登记在我的dataTable和dataEx

  • 我使用primefaces 3.5,我有一个p:dataTable,其中有一些行和数据,我想将这些数据导出到xls文件或其他文件中。 我使用了代码: 这很好用! 我的问题是,我希望在导出的文件和浏览器数据表中有不同的单元格文本。 例如,在导出的xls文件中,我需要在浏览器数据表中设置其他日期格式。否则浏览器单元格中的文本太长! 我试图添加一个额外的列,其中rendered=“false”和expo

  • 我决定问这里,这样我就能解决我的问题。在我写信给你之前,我可以向你保证,我在谷歌搜索了很多,但没有找到答案。 在我的PRIMEFACES中,p:DataTable中p:Column中的sortBy和filterBy不起作用。 让我们从SortBy开始。()在我尝试的所有版本中,如您在下面的pom.xml中所看到的:6.2,7.0,7.0.rc3,8.0,8.0.rc3中所示,它都有这样的行为:它显

  • 我正在使用PrimeFaces 5并使用dataexport导出. xls和pdf文件。当我单击导出时,似乎什么都没有发生。下面是我的代码: dataTable和Export命令都在一个表单中。它类似于素数面上给出的示例。组织网站。但是,我无法将数据导出到pdf、cvs。

  • 问题内容: 似乎在最新版本的PrimeFaces中,为DataExporter 添加了新类型(请参阅当前primefaces 6.2文档中的ExporterType) 对于新的Apache POI XLSX和XLSXSTREAM类型,我似乎在网上找不到任何东西。有人可以解释两者之间的区别吗?一个比另一个更有效吗?导出数据的大小是否有限制? 问题答案: 我可以解释。它们均产生与使用Apache PO

  • 我可以成功地构建以下数据表: 但我有个例外: 当我尝试使用p:dataExporter组件导出时: 是。 有什么想法吗? 代码段: 类具有和属性;类具有属性。