Então galera, tenho uma <p:dataTable> que é o meu carrinho de compras, nele tem a listaItemCarrinho;
consigo adicionar os items nele certinho.
Porem na hora de excluir um item do carrinho, tenho que clicar 2 vez no botao excluir pra ele carregar o atributo no Bean Controlador e excluir o produto da lista. alguem pode me ajudar??
Segue o codigo:
carrinho.xhtml
<h:form id="formCarrinho">
<p:dataTable id="carrinhoCompras" var="produtoCarrinho" value="#{carrinhoBean.listaItemCarrinho}" rendered="#{carrinhoBean.mostrarCarrinho}">
<p:column>
<f:facet name="header">
<h:outputText value="Produto"/>
</f:facet>
<h:outputText value="#{produtoCarrinho.prod.nome}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Quan"/>
</f:facet>
<h:outputText value="#{produtoCarrinho.quantidadeEscolhida}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Preço"/>
</f:facet>
<h:outputText value="#{produtoCarrinho.prod.valor}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Total"/>
</f:facet>
<h:outputText value="#{produtoCarrinho.totalQuantidadeXPreco}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir"/>
</f:facet>
<p:commandButton value="X" actionListener="#{carrinhoBean.removeItemCarrinho}" update="formCarrinho">
<f:setPropertyActionListener value="#{produtoCarrinho.prod}"
target="#{carrinhoBean.prod}" />
</p:commandButton>
</p:column>
</p:dataTable>
CarrinhoBean
public void removeItemCarrinho() {
List<ItemCarrinho> novaListaItemCarrinho = new ArrayList<ItemCarrinho>();
if (listaItemCarrinho.size() == 1) {
listaItemCarrinho = new ArrayList<ItemCarrinho>();
totalPedido = 0;
mostrarCarrinho = false;
} else {
for (int x = 0; x < listaItemCarrinho.size(); x++) {
Produto prodCompare = listaItemCarrinho.get(x).getProd();
if (prodCompare == prod) {
totalPedido -= ((prod.getValor()) * listaItemCarrinho.get(x).getQuantidadeEscolhida());
totalPedido = utilitarios.Conversores.converterParaDuasCasasAposVirgula(totalPedido);
} else {
novaListaItemCarrinho.add(new ItemCarrinho(listaItemCarrinho.get(x).getProd(), listaItemCarrinho.get(x).getQuantidadeEscolhida()));
}
}
listaItemCarrinho = novaListaItemCarrinho;
}
}
O metodo funciona certinho, o problema é ter que clicar 2 vez no excluir pra ele passar o parametro é como se primeiro ele executasse o metodo no actionListener pra depois disso passar o parametro. Se alguem puder ajudar Obrigado.