如何在 Primefaces 惰性数据表上获取过滤值?

How to get filtered value on Primefaces lazy datatable?

我在 primefaces 数据表上使用 lazy="true" 因为我的数据很大。但是这次我没有得到过滤后的列表。我猜,问题是 dataTable 的值是 org.primefaces.model.LazyDataModel 而 filteredValue 是 java.util.List。那么,我怎样才能在我的数据表上获得 filteredValue 呢?有什么建议吗?

我的数据表声明:

<p:dataTable id="tblIzin" 
             var="izin" 
             value="#{izinBean.lazyModelIzin}"
             lazy="true"
             paginator="true"
             rows="10"
             paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
             scrollable="true"
             scrollWidth="79%"
             scrollHeight="37%"
             editable="true"
             editMode="cell"
             filteredValue="#{izinBean.filteredList}"
             emptyMessage="Kayıt bulunamadı." >

提前致谢。

您可以在 bean 中获取 table,如下所示:

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot()
                .findComponent("myFormId:tblIzin");

然后,获取过滤器图

dataTable.getFilters(); //return a Map

您必须覆盖 primefaces 惰性数据表

public class YourDataModel extends LazyDataModel<Car> {

    @Override
    public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
         //Here you will get your filters
    }
}

如果您进行惰性过滤,则必须根据给定的过滤器自行过滤值。

因此您的值存储在 izinBean 中。您可以使用 Getter 方法访问它们 izinBean.getFilteredList()

通常你会执行一个服务方法,它根据给定的过滤器在后端过滤你的值,然后 return filteredValues。