Pessoal, não sei se o problema está relacionado a lógica do Managed Bean ou a renderização do ajax. Ou, ainda, as 2 coisas.
Tenho um dataTable que traz todos os registros(até aí funciona), mas após digitar o nome em um inputText, quero que o dataTable traga apenas o registro pesquisado.
Seguem os meus métodos relacionados(não postei todos):
FuncionarioMB
private String nome;
private List<Funcionario> listFuncionario;
public List<Funcionario> getListFuncionario() {
if (this.listFuncionario == null) {
this.listFuncionario = new ArrayList<Funcionario>();
this.listFuncionario = this.genericDAOFunc.ListAll();
}
return listFuncionario;
}
public void setListFuncionario(List<Funcionario> listFuncionarios) {
this.listFuncionario = listFuncionarios;
}
//Método que altera o listFuncionario para o dataTable exibir.
public void listaFuncionariosPesquisado() {
List<Funcionario> funcionariosPesquisados = new ArrayList<Funcionario>();
funcionariosPesquisados = genericDAOFunc.funcionarioPorNome(this
.getNome());
this.setListFuncionario(funcionariosPesquisados);
}
O meu xhtml:
<f:view>
<h:form>
<rich:panel style="width:75%">
<h:inputText value="#{funcionarioMB.nome}" id="nomePesq" />
<rich:suggestionbox for="nomePesq"
suggestionAction="#{funcionarioMB.listarNomesPesquisados}" var="_f">
<h:column>
#{_f.nome}
</h:column>
</rich:suggestionbox>
<a4j:commandButton value="Buscar"
action="#{funcionarioMB.listaFuncionariosPesquisado}"
reRender="_tabelaFunc">
</a4j:commandButton>
<rich:dataTable id="_tabelaFunc" width="100%"
value="#{funcionarioMB.listFuncionario}" var="_func" rows="5"
reRender="dataScroller" rendered="true" columnClasses="center"
border="1">
<f:facet name="header">
<h:outputText value="Funcionarios " />
</f:facet>
<rich:column sortBy="#{_func.nome}">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{_func.nome}" />
</rich:column>
<rich:column sortBy="#{_func.email}">
<f:facet name="header">
<h:outputText value="Email" />
</f:facet>
<h:outputText value="#{_func.email}" />
</rich:column>
<rich:column sortBy="#{_func.dataNascimento}">
<f:facet name="header">
<h:outputText value="Data de Nascimento" />
</f:facet>
<h:outputText value="#{_func.dataNascimento}" />
</rich:column>
<rich:column>
</rich:column>
<f:facet name="footer">
<rich:datascroller id="dataScroller" />
</f:facet>
</rich:dataTable>
</rich:panel>
</h:form>
</f:view>
</ui:composition>
</html>
Os métodos DAO estão ok, pois fiz os testes unitários e o resultados vieram conforme o esperado.
Desde já, agradeço.