1
resposta

Filtrar por todas as colunas com um único campo de filtro

Olá, tentei implementar a procura por todas as colunas apenas colocando o campo de pesquisa no <f:facet, ou seja, sem acrescentar o filterBy="#{livro.atributo}" nas demais colunas. Dessa forma não funciona, ou seja, todas as colunas tem que conter o atributo filterBy="#{livro.atributo}". Fica redundante ter um campo em cima da tabela, que filtra todas as colunas e em cada coluna ter outro campo de pesquisa.

Tentei deixar em cada coluna somente o atributo filterMatchMode, mas só funciona a pesquisa pelo campo em cima da tabela se tiver filterBy="#{livro.atributo}" E filterMatchMode em todas as colunas. Ou será que configurei errado?

Somente da forma abaixo funciona a pesquisa por todos os campos filtrando pelo campo do <f:facet Espero que não tenha ficado confuso

            <p:dataTable value="#{livroBean.livros}" var="livro" id="tabelaLivros" paginator="true" rows="5" widgetVar="tabelaLivrosFilter" filteredValue="#{livroBean.listaDeLivros}">
                <f:facet name="header">Livros
                    <p:outputPanel>
                        <h:outputText value="Procurar por todas as colunas:" />
                        <p:inputText id="globalFilter" onkeyup="PF('tabelaLivrosFilter').filter()" style="width:150px" placeholder="Enter keyword"/>
                    </p:outputPanel>                    
                </f:facet>

                <p:column headerText="Título" sortBy="#{livro.titulo}" filterBy="#{livro.titulo}" filterMatchMode="contains">
                  <h:outputText value="#{livro.titulo}" />
                </p:column>
1 resposta

Pelo oque entendi, vai ter que fazer uma pesquisa pelo título do livro, por exemplo, daí ele vai pesquisar em todos os livros. Mas sem usar o filter do primefaces.