I have a data table:
<p:dataTable id="pDataTableListaRegistros"
var="registro"
value="#{arquivoBean.listaRegistros}"
paginator="true"
rows="20"
filteredValue="#{arquivoBean.filteredListaRegistros}"
styleClass="tabelaCentralizada">
I would like to get the values entered in filter fields "Code", "Data do Registro" and "Usuário" to manipulate in a backing bean.
You can get the filter value from the datatable by
Obtain a reference to the datatable from the view either by binding or walking the tree. By binding, you'll have:
<p:dataTable binding="#{arquivoBean.theDataTable}" id="pDataTableListaRegistros" var="registro" value="#{arquivoBean.listaRegistros}" paginator="true" rows="20" filteredValue="#{arquivoBean.filteredListaRegistros}" styleClass="tabelaCentralizada"/>
And in your backing bean:
DataTable theDataTable = new DataTable();
//getter and setter
From the binding
Map<String, String> theFilterValues = theDataTable.getFilters(); //This returns a map of column-filterText mapping.
You can add a map to your bean, like:
private Map<String, Serializable> filterValues = new HashMap<>();
And bind the values to the map using the filterValue
attribute of p:column
, for example:
<p:column headerText="Name"
sortBy="#{item.name}"
filterBy="#{item.name}"
filterMatchMode="contains"
filterValue="#{yourBean.filterValues['name']}">
<h:outputText value="#{item.name}" />
</p:column>
Advantage of this solution is that the values will be kept when you update your table.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With