Как получить значения, введенные в поле 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", чтобы манипулировать в резервном компоненте.

enter image description here

2 ответов


вы можете получить значение фильтра из datatable по

  1. получите ссылку на 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
    
  2. от привязки

       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>

преимущество этого решения заключается в том, что значения будут сохранены при обновлении таблицы.