2015-09-29 1 views
3

Я использую ленивую модель для datatable в Primefaces. Для экспорта я хочу получить все данные, и я имею в виду данные, которые используются для подсчета строк.Поверхности получают все данные в ленивой модели

я могу получить все данные, приведенные в настоящее время на DataTable страницы с помощью:

List<Info> data = (List<Info>) lazyModel.getWrappedData(); 

, но может быть больше данных на несколько страниц. Есть ли какой-либо метод, похожий на только что упомянутый, чтобы получить все данные из datatable?

Я попытался использовать это, но это всегда будет возвращать нуль:

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot() 
      .findComponent(":form:infoTable"); 
List<Info> data = dataTable.getFilteredValue(); 

Другим способом я попытался это просто сделать почти такой же запрос я делаю для подсчета строк, с разницей, что Я получаю список объектов, а не количество строк, но для этого мне также нужен фильтр. Если это может быть решение, как мне получить фильтр, который я использую для ленивой загрузки?

Как я могу решить эту проблему?

ответ

1

Решение заключается в получении фильтра. Я извлек свой пользовательский фильтр из ленивой модели и использовал его для запроса из метода overriden load, поэтому единственное различие заключается в том, что я не использовал аргументы сначала и размер страницы.

нет ничего нового, чтобы показать в решении, я просто должен был получить фильтр:

Map<String, Object> filters = ((MyLazyDataModel) lazyModel).getFilters().getFilters();