Pessoal, estou tentando implementar um dataTable com filtro nele.
A necessidade existe pois uma pessoa poderá procurar um endereco utilizando um cep genérico (ex: 24000-000) assim, todos os logradouros abaixo desta hierarquia será apresentado logo, vou utilizar o filtro do datable para refinar a pesquisa.
O problema é que depois de implementar o filtro, conforme código anexado, quando eu clico no botão de pesquisar, nenhum valor e inserido no dataTable.
Já tentei dar um set na List que o dataTable utiliza como filtro e na outra List que ele carrega porém, nada feito. Não funcionou.
Neste caso estou fazendo um exemplo por código mas em teoria vai será a mesma lógica utilizada no CEP.
O sistema é a figura abaixo:

Bean:
@Named
@RequestScoped
public class CadastroClienteBean implements Serializable {
private static final long serialVersionUID = 1L;
private Cliente cliente;
private List<Cliente> clientes;
private List<Cliente> filtrados;
private String valorPesquisa;
@EJB
CadastroClienteEJB cadastroClienteEJB;
public CadastroClienteBean() {
System.out.println("===> Chamou o CONSTRUTOR");
cliente = new Cliente();
clientes = new ArrayList<Cliente>();
filtrados = new ArrayList<Cliente>();
}
public void pesquisar() {
System.out.println("===> Entrou no método PESQUISAR");
System.out.println("===> Valor campo pesquisaAtual: "
+ this.valorPesquisa);
System.out.println("===> Valor campo pesquisaAnterior: "
+ this.pesquisaAnterior);
if (this.valorPesquisa == null || this.valorPesquisa.equals("")) {
pesquisaAnterior = new String(valorPesquisa);
this.clientes = cadastroClienteEJB.buscarTodos();
} else {
pesquisaAnterior = new String(valorPesquisa);
this.clientes = this.cadastroClienteEJB
.pesquisar(this.valorPesquisa);
}
}
xhtml:
<h:form id="frmPesquisa">
<p:panelGrid columns="3">
<h:outputLabel value="Pesquisar" for="pesquisa" />
<h:inputText id="pesquisa"
value="#{cadastroClienteBean.valorPesquisa}" />
<p:commandButton value="Pesquisar"
action="#{cadastroClienteBean.pesquisar}" update="@form" />
</p:panelGrid>
<br />
<br />
<br />
<p:dataTable id="tableResult" value="#{cadastroClienteBean.clientes}"
filteredValue="#{cadastroClienteBean.filtrados}" var="cliente"
border="1" cellpadding="5">
<p:column headerText="Código" filterBy="#{cliente.codigo}">
<h:outputText value="#{cliente.codigo}" />
</p:column>
<p:column headerText="Nome">
<h:outputText value="#{cliente.nome}" />
</p:column>
<p:column headerText="Idade">
<h:outputText value="#{cliente.idade}" />
</p:column>
<p:column headerText="Sexo">
<h:outputText value="#{cliente.sexo}" />
</p:column>
<p:column headerText="Profissão">
<h:outputText value="#{cliente.profissao}" />
</p:column>
</p:dataTable>
</h:form>