2015-02-10 3 views
1

Я использую lazy="true" на основе шрифтов, потому что мои данные большие. Но на этот раз я не получил отфильтрованный список. Я думаю, проблема в значении dataTable: org.primefaces.model.LazyDataModel, а filterValue - java.util.List. Итак, как я могу получить filterValue на моем datatable? Любое предложение?Как получить отфильтрованное значение на Primefaces lazy datatable?

Моя DataTable декларация:

<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

Зачем вам нужна фильтрация? Если вы используете lazyLoading, вы выполняете фильтрацию в методе загрузки, и там у вас есть отфильтрованный список ... – Kukeltje

+0

Я буду использовать filterValue для статистики/диаграммы и т. Д., И да, я вижу метод загрузки, но я не получил filterValue , Вот в чем вопрос. Как я могу его получить? – serifsadi

ответ

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

Обычно вы должны выполнить Сервисный метод, который фильтрует ваши значения в бэкэнд в соответствии с заданными фильтрами и затем возвращает filterValues.

1

Вы можете получить таблицу внутри боба, как это:

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

затем, возьмите карту фильтры

dataTable.getFilters(); //return a Map 
Смежные вопросы