Мне нужно сохранять отфильтрованные данные, когда я перемещаюсь между страницами. После ввода данных в ячейку фильтра таблицы данных отображаются правильные отфильтрованные строки. Если последние введенные данные в ячейке фильтра не совпадают с отображаемыми строками данных, и когда я перехожу на другую страницу и возвращаю назад - заголовки столбцов и ячейки фильтра не отображаются. Отображается только paginator. Он отлично работает, если последние введенные данные в ячейке фильтра соответствуют некоторым строкам данных. Он работает правильно, если я не покину страницу с таблицей данных.p: dataTable не отображает заголовок после фильтрации и подкачки назад
код JSF:
<p:dataTable id="tableId" var="intance" widgetVar="instance"
value="#{model.rows}" filteredValue="#{model.filteredRows}"
sortBy="#{model.sortBy}" sortMode="multiple" rows="5"
rowsPerPageTemplate="5, 15" paginator="true" paginatorPosition="bottom">
<p:ajax event="filter" listener="#{model.onFilter}"/>
<p:ajax event="sort" listener="#{model.onSort}"/>
<p:columns id="columnId" value="#{instance.columnsData}"
var="instanceColumn" columnIndexVar="ind" rendered="true"
sortBy="#{instance.columnsData[ind]}"
filterBy="#{instance.columnsData[ind]}" filterMatchMode="contains"
filterValue="#{model.tableFilters[''.concat(ind)]}"
headerText="#{labels[ind]}">
<h:outputText value="#{instance.columnsData[ind]}"/>
</p:columns>
</p:dataTable>
код Java:
public class Model {
private List<MyRow> filteredRows;
private List<MyRow> rows;
private Map<String, String> tableFilters;
public void onFilter(FilterEvent event) {
tableFilters = event.getFilters();
if (MapUtils.isEmpty(tableFilters)) {
filteredRows = null;
}
}
public void List<MyRow> getRows() {
//retreve data from service and transform to List<MyRow>)
return rows;
}
/* getters and setter */
}
public class MyRow {
private List<Object> columnsData;
/* getters and setters */
}
Любые мысли? Код выглядит хорошо для меня и должен работать. Я использую первичности 3.5.
Благодаря
[Не делайте бизнес-логику в метод получения] (http://stackoverflow.com/questions/2090033/why-jsf-calls -getters и множество раз). – BalusC
Спасибо. Вопрос по-прежнему открыт. – bonch