Boa noite pessoal estou tentando implementar um filtro com jpa, jsf e primefaces. bom na minha bean eu tenho o método para o filtro
public List<Produto> filtroPersonalizado() {
EntityManager em = JPAUtil.getEntityManager();
String consulta = "select p from Produto p where p.nomeProduto = :nome";
TypedQuery<Produto> query = em.createQuery(consulta, Produto.class);
query.setParameter("nome", produto.getNomeProduto());
this.resultado = query.getResultList();
System.out.println(resultado.get(0).getNomeProduto());
return resultado;
}
em minha view eu tenho os dados minha ideia inicial seria filtrar o campo digitado
<p:growl>
Filtro: <p:inputText value="#{mbProduto.produto.nomeProduto}"/>
<p:commandButton icon="ui-icon-search" title="Filtrar"
action="#{mbProduto.filtroPersonalizado}">
</p:commandButton>
</p:growl>
<p:dataTable value="#{mbProduto.produto}"
var="produtos"
paginator="true"
rows="10"
paginatorTemplate="{CurrentPageReport}
{FirstPageLink}
{PreviousPageLink} {PageLinks}
{NextPageLink} {LastPageLink}
{RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
style="width: 98%"
lazy="true">
<p:column>
<f:facet name="header">
Cod.:
</f:facet>
#{produtos.idProduto}
</p:column>
<p:column>
<f:facet name="header">
Nome:
</f:facet>
#{produtos.nomeProduto}
</p:column>
<p:column>
<f:facet name="header">
Esf.:
</f:facet>
#{produtos.especificacaoProduto}
</p:column>
<p:column>
<f:facet name="header">
X.:
</f:facet>
#{produtos.medidaX}
</p:column>
<p:column>
<f:facet name="header">
Y.:
</f:facet>
#{produtos.medidaY}
</p:column>
<p:column>
<f:facet name="header">
R$ Venda
</f:facet>
#{produtos.precoDeMetroVenda}
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<p:commandButton icon="ui-icon-close" title="Excluir um produto"
action="#{mbProduto.excluir}"
id="produtos" ajax="false" onclick="if(!confirm('Deseja excluir #{produtos.nomeProduto} ?')) return false">
<f:setPropertyActionListener value="#{produtos}" target="#{mbProduto.produto}"/>
</p:commandButton>
<p:commandButton icon="ui-icon-arrowreturnthick-1-s" title="Alterar um produto"
action="#{mbProduto.direcionarAlteracao}">
<f:setPropertyActionListener value="#{produtos}" target="#{mbProduto.produto}"/>
</p:commandButton>
<p:commandButton icon="ui-icon-circle-plus" title="Adicionar um produto" action="#{mbProduto.novo}"/>
</p:column>
</p:dataTable>
obs: isso é apenas para eu ver no console se estava pegando e estava: System.out.println(resultado.get(0).getNomeProduto());
então quando o usuário digitasse o nome a tabela traria o nome selecionado.
obrigado
Acho que você esqueceu de nos dizer qual que é o problema 
o que estou tentando fazer seria um filtro personalizado do campo imput entende ao passar o dado de entrada recarregar minha tabela com os resultados informados
ou seja os passos são o seguintes:
- o usuário entrou na tela
- ao usuário informar um registro no campo input e pressionar o botão para buscar a tabela é carregada.
acho que é isso
obs: não gostaria de fazer da forma do showcase do primefaces, pois não quero que minha aplicação fique muito presa a ele, apesar de isso já estar acontecendo.

Sim, eu entendi o que você quer fazer, mas eu não entendi o que que está dando errado, que problema aconteceu que te impede de fazer o que quer?
simplesmente não gera erro nenhum e não faz a listagem
vou postar meu código inteiro para você ver
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<!--
@autor: André Martins
@contact: andremartins@outlook.com.br
@cel: 63 8412 1921
-->
<h:head>
<title><ui:insert name="title">Modelo de Página</ui:insert></title>
<h:outputStylesheet library="css" name="estilo.css"/>
</h:head>
<h:body>
<ui:composition template="/templates/master.xhtml">
<ui:define name="conteudo">
<h2><p:outputLabel value=" Filtro e ações para produtos"/></h2>
<p:growl>
Filtro: <p:inputText value="#{mbProduto.produto.nomeProduto}"/>
<p:commandButton icon="ui-icon-search" title="Filtrar"
action="#{mbProduto.filtroPersonalizado}">
</p:commandButton>
</p:growl>
<p:dataTable value="#{mbProduto.produtos}"
var="produtos"
paginator="true"
rows="10"
paginatorTemplate="{CurrentPageReport}
{FirstPageLink}
{PreviousPageLink} {PageLinks}
{NextPageLink} {LastPageLink}
{RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
style="width: 98%"
lazy="true">
<p:column>
<f:facet name="header">
Cod.:
</f:facet>
#{produtos.idProduto}
</p:column>
<p:column>
<f:facet name="header">
Nome:
</f:facet>
#{produtos.nomeProduto}
</p:column>
<p:column>
<f:facet name="header">
Esf.:
</f:facet>
#{produtos.especificacaoProduto}
</p:column>
<p:column>
<f:facet name="header">
X.:
</f:facet>
#{produtos.medidaX}
</p:column>
<p:column>
<f:facet name="header">
Y.:
</f:facet>
#{produtos.medidaY}
</p:column>
<p:column>
<f:facet name="header">
R$ Venda
</f:facet>
#{produtos.precoDeMetroVenda}
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<p:commandButton icon="ui-icon-close" title="Excluir um produto"
action="#{mbProduto.excluir}"
id="produtos" ajax="false" onclick="if(!confirm('Deseja excluir #{produtos.nomeProduto} ?')) return false">
<f:setPropertyActionListener value="#{produtos}" target="#{mbProduto.produto}"/>
</p:commandButton>
<p:commandButton icon="ui-icon-arrowreturnthick-1-s" title="Alterar um produto"
action="#{mbProduto.direcionarAlteracao}">
<f:setPropertyActionListener value="#{produtos}" target="#{mbProduto.produto}"/>
</p:commandButton>
<p:commandButton icon="ui-icon-circle-plus" title="Adicionar um produto" action="#{mbProduto.novo}"/>
</p:column>
</p:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
*/
@ManagedBean(name="mbProduto")
public class MbProduto implements Serializable{
private static final long serialVersionUID = 1L;
private Produto produto;
private ProdutoDao produtoDao;
private List<Produto>produtos;
private List<Produto>resultado;
public MbProduto(){
this.produto = new Produto();
this.produtoDao = new ProdutoDao();
this.produtos = new ArrayList<Produto>();
this.resultado = new ArrayList<Produto>();
}
public List<Produto> getProdutos() {
EntityManager em = JPAUtil.getEntityManager();
Query q = em.createQuery("select a from Produto a",
Produto.class);
this.produtos = q.getResultList();
em.close();
return produtos;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public ProdutoDao getProdutoDao() {
return produtoDao;
}
public void setProdutoDao(ProdutoDao produtoDao) {
this.produtoDao = produtoDao;
}
public String excluir() {
produtoDao.excluir(produto);
return null;
}
public String salvar(){
if(produto.getIdProduto() == null || produto.getIdProduto() == 0 ){
produtoDao.salvar(produto);
//FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Inserção de produtos", "inserido com sucesso.");
//RequestContext.getCurrentInstance().showMessageInDialog(message);
} else {
produtoDao.alterar(produto);
//FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Alteração de produtos", "Alterado com sucesso.");
//RequestContext.getCurrentInstance().showMessageInDialog(message);
}
return "pgtbproduto";
}
public String novo(){
return "pgproduto";
}
public String direcionarAlteracao(){
return "pgproduto";
}
public List<Produto> filtroPersonalizado() {
EntityManager em = JPAUtil.getEntityManager();
String consulta = "select p from Produto p where p.nomeProduto = :nome";
TypedQuery<Produto> query = em.createQuery(consulta, Produto.class);
query.setParameter("nome", produto.getNomeProduto());
this.resultado = query.getResultList();
return resultado;
}
}
ta ai, no caso dos get e set do resultado eu tirei mas no codigo original eles existem.
você viu se o método é invocado e processa corretamente?
tentou dar um update na dataTable?