2015-02-10 45 views
1

我用lazy="true"上primefaces数据表,因为我的数据是大的。但是这一次我没有得到过滤列表。我想,这个问题是dataTable的值是org.primefaces.model.LazyDataModel和filteredValue是java.util.List。那么,我怎样才能得到我的数据表中的filteredValue?任何建议?如何在Primefaces惰性数据表上获得过滤值?

我的数据表声明:

<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ı." > 

在此先感谢。

+0

为什么你需要的filteredValue?如果使用惰性加载,你做的过滤负载方法有你有过滤列表... – Kukeltje 2015-02-10 09:08:20

+0

我会用filteredValue进行统计/图等,是的,我看到负载方法,但我没有得到filteredValue 。这就是问题所在。我怎么才能得到它 ? – serifsadi 2015-02-10 09:14:18

回答

3

您必须覆盖primefaces懒惰的DataTable

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。

1

你可以得到表你的bean里面,像这样:

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

然后,抓住过滤器地图

dataTable.getFilters(); //return a Map