如何获取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ı." >

提前谢谢。

您必须覆盖素数面惰性数据表

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

通常情况下,您会执行一个服务方法,该方法根据给定的过滤器在后端过滤您的值,然后返回filteredValues。

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

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

然后,抓取过滤器映射

dataTable.getFilters(); //return a Map

最新更新