Changed to probable solution but still not working, it seems that the line with ajax is not updated.
<h:body>
<h:form id="formTableProd">
<ui:composition template="/templates/master.xhtml">
<ui:define name="conteudo">
<h2>
<p:outputLabel value=" Filtro e ações para produtos" />
</h2>
<h:panelGrid columns="4">
<p:outputLabel value="Filtro:" />
<p:inputText value="#{mbProduto.produto.nomeProduto}" size="50"
maxlength="150" onkeyup="this.value = this.value.toUpperCase()">
</p:inputText>
<p:commandButton icon="ui-icon-search" title="Filtrar"
action="#{mbProduto.filtroPersonalizado}" update="@form">
</p:commandButton>
</h:panelGrid>
<p:dataTable id="tableProduto" value="#{mbProduto.resultado}"
var="produtos" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport}
{FirstPageLink}
{PreviousPageLink} {PageLinks}
{NextPageLink} {LastPageLink}
{RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" style="width: 98%" lazy="true"
rowKey="#{produtos.idProduto}" selectionMode="single">
<p:column>
<f:facet name="header">
<h:outputText value="Cod.:" />
</f:facet>
<p:outputLabel value="#{produtos.idProduto}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome:" />
</f:facet>
<p:outputLabel value="#{produtos.nomeProduto}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Esf.:" />
</f:facet>
<p:outputLabel value="#{produtos.especificacaoProduto}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="X.:" />
</f:facet>
<p:outputLabel value="#{produtos.medidaX}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Y.:" />
</f:facet>
<p:outputLabel value="#{produtos.medidaY}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="R$ Venda" />
</f:facet>
<p:outputLabel value="#{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}" update="tableProduto"
process="@this" ajax="true">
<f:ajax execute="@form" update="produtos.idProduto"
render=":tableProduto"></f:ajax>
<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:form>
My get from the list and my method to bring the filter, now both refer to the same list.
public List<Produto> getResultado(){
if(resultado == null){
resultado = new ArrayList<Produto>();
EntityManager em = JPAUtil.getEntityManager();
Query q = em.createQuery("select a from Produto a", Produto.class);
this.resultado = q.getResultList();
em.close();
}
return resultado;
}
public String 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();
em.close();
return "";
}
The situation now is as follows, it updates the filter loads on my EL but it can not find when I press the button to edit it, in case it looks like it was the old one, ie it always brings the first one from the list .