Как получить значения, введенные в поле Filtered DataTable of Primefaces?
У меня есть таблица данных:
<p:dataTable id="pDataTableListaRegistros"
var="registro"
value="#{arquivoBean.listaRegistros}"
paginator="true"
rows="20"
filteredValue="#{arquivoBean.filteredListaRegistros}"
styleClass="tabelaCentralizada">
Я хотел бы получить значения, введенные в поля фильтра "код", "данные делают Registro" и "Usuário", чтобы манипулировать в резервном компоненте.
2 ответов
вы можете получить значение фильтра из datatable по
-
получите ссылку на datatable из представления либо путем привязки, либо путем обхода дерева. Связывая, вы будете иметь:
<p:dataTable binding="#{arquivoBean.theDataTable}" id="pDataTableListaRegistros" var="registro" value="#{arquivoBean.listaRegistros}" paginator="true" rows="20" filteredValue="#{arquivoBean.filteredListaRegistros}" styleClass="tabelaCentralizada"/>
и в вашем бэк-Бине:
DataTable theDataTable = new DataTable(); //getter and setter
-
от привязки
Map<String, String> theFilterValues = theDataTable.getFilters(); //This returns a map of column-filterText mapping.
вы можете добавить карту в свой боб, например:
private Map<String, Serializable> filterValues = new HashMap<>();
и привязать значения к карте с помощью на p:column
, например:
<p:column headerText="Name"
sortBy="#{item.name}"
filterBy="#{item.name}"
filterMatchMode="contains"
filterValue="#{yourBean.filterValues['name']}">
<h:outputText value="#{item.name}" />
</p:column>
преимущество этого решения заключается в том, что значения будут сохранены при обновлении таблицы.