首页 > 解决方案 > 惰性搜索在 Primefaces 7.0 中不起作用

问题描述

地图过滤器在 Primefaces 7.0 DataTable Lazy 搜索中将该属性设为空。

我已经从 primefaces 5.0 升级到 7.0,相同的代码在 5.0 中运行良好。

我有一个 JSF 页面,我在其中使用 Primefaces DataTable 并在数据表中实现了惰性搜索,但它不起作用。

问题是当我调试这段代码时,我得到null=123456789作为过滤器映射中的键/值。我无法理解为什么我得到 null 作为属性值,因此我得到了

java.lang.NullPointerException 在 javax.faces.component.StateHolderSaver.(StateHolderSaver.java:96)

JSF页面中的一段代码:

<p:dataTable id="d1" lazy="true" paginator="true"
    paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
    rendered="#{!bean.login}" rows="10"
    rowsPerPageTemplate="5,10,15" styleClass=""
    value="#{bean.lazyDataModel}" var="row"
    widgetVar="gridFilter" reflow="true">
        <p:column disabledSelection="false" exportable="false"
          resizable="false" toggleable="false">
            <p:rowToggler />
        </p:column>
        <p:column disabledSelection="false" exportable="false"
           filterBy="#{row[0]}"
           headerText="#{bean.dataTableHeaderNames[0]}"
           resizable="false" toggleable="false">
            <f:facet name="filter">
                <p:inputText onchange="PF('gridFilter').filter()"
                placeholder="Search" styleClass="textingrid" />
            </f:facet>
            <h:outputLabel id="g1" value="#{row[0]}" />
        </p:column>

.........

这是延迟模型片段的代码:

@Override
    public List  load(int first, int pageSize, String sortField,SortOrder sortOrder, Map<String,Object> filters)
    {

       result=dbObject.lazyLoadList(first, pageSize, sortField, filters);

        return result;      
    }
}

标签: primefaces

解决方案


我在从 6.0 迁移到 7.0 时遇到了同样的问题,通过升级到 PrimeFaces 7.0.15 解决了这个问题,而没有更改过滤器功能中的任何内容。

不幸的是,任何 7.x 版本都落后于付费专区 (PrimeElite)。


推荐阅读