Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PrimeFaces的DataTable Paginator下拉列表中显示“全部显示”选项_Primefaces_Jsf 2_Pagination - Fatal编程技术网

在PrimeFaces的DataTable Paginator下拉列表中显示“全部显示”选项

在PrimeFaces的DataTable Paginator下拉列表中显示“全部显示”选项,primefaces,jsf-2,pagination,Primefaces,Jsf 2,Pagination,我有Java程序,我使用Primefaces分页和延迟加载。 我想在rowsPerPageTemplate中添加Show All <p:dataTable var="info" value="#{infoMB.lazyModel}" id="infoTable" width="100%" liveResize="true"

我有Java程序,我使用Primefaces分页和延迟加载。 我想在rowsPerPageTemplate中添加Show All

<p:dataTable var="info"
                    value="#{infoMB.lazyModel}"
                    id="infoTable"
                    width="100%"
                    liveResize="true"
                    paginator="true"
                    rows="50"
                    paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                    rowsPerPageTemplate="50,100,"Show all" rowsPerPageAllEntry="true"
                    lazy="true">

要使commandButton显示在dataTable fallow中,请执行以下示例:

<p:dataTable ... >

   <f:facet name="header" > <p:commandButton value="Validate button" action="#{managedBean.method()}" > </p:commandButton> </f:facet>

 </p:dataTable ... >
您甚至可以像这样在数据表的底部显示它

 <p:dataTable ... >

   <f:facet name="footer" > <p:commandButton value="Validate button" action="#{managedBean.method()}" > </p:commandButton> </f:facet>

 </p:dataTable ... >

希望这对你有帮助

似乎对我有用。在rowsPerPageTemplate 9999999中设置最后一个选项

    <script>
        function updateShowAll() {
            $('.ui-paginator-rpp-options').children().each(function() {if ($(this).text() === '999999999'){$(this).text('Show all')}});
        }
        updateShowAll();
        $(document).on('pfAjaxComplete', updateShowAll);
    </script>
事件处理程序是为了避免在更新datatable后必须记住手动调用js函数


这似乎将通过使用*

在PF 6.1中构建。我同意@Jaqen H'ghar在评论部分的说法,这是我见过的最神秘的公认答案。我在这里发布解决方案,以防其他人在这方面寻找解决方案

我正在使用Primefaces-7.0,并查看了org/Primefaces/component/paginator/RowsPerPageDropDownRenderer.class的代码,发现以下代码:

if (option.trim().startsWith("{ShowAll|")) {
    optionText = option.substring(option.indexOf("'") + 1, option.lastIndexOf("'"));
    rows = pageable.getRowCount();
  } else {
    optionText = option.trim();
    rows = Integer.parseInt(optionText);
  }
因此,为了使示例生效,您应该添加{ShowAll |'Show All',这将在下拉选择器中添加一个**Show All**选项,该选项将在一个页面中显示列表中的所有行

示例Primefaces-7.0{ShowAll |“Show All”


为什么不把它放在表格的标题中呢?谢谢你的评论,如何放在标题中?它看起来是这样的。它将直接放在下面。谢谢你的时间和帮助。我是Java初学者,什么是平均操作={managedBean.method}?@AllexFerra它可以是任何java方法public void method{…}@AllexFerra有什么新东西吗?!这是我见过的最神秘的答案
<p:dataTable var="info"
                value="#{infoMB.lazyModel}"
                id="infoTable"
                width="100%"
                liveResize="true"
                paginator="true"
                rows="50"
                paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                rowsPerPageTemplate="50,100,{ShowAll|'Show All' " rowsPerPageAllEntry="true"
                lazy="true">
<p:dataTable var="info"
            value="#{infoMB.lazyModel}"
            id="infoTable"
            width="100%"
            liveResize="true"
            paginator="true"
            rows="50"
            paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
            rowsPerPageTemplate="50,100,*" rowsPerPageAllEntry="true"
            lazy="true">