Eu criei um array que recebe o ID e Descrição da classe produto e a quantidade da Classe ItemDoPedido, e essa classe dá um extend na classe Produto. Só que cada vez que execute o método no bean que adiciona os valores no carrinho, ele pega o último valor + o atual, e assim exponencialmente, o que eu estou fazendo de errado ?
Classes modelo:
ItemDoPedido:
public class ItemDoPedido{
private int id; public int quantidade; public Produto p;//getters and setters
Produto
public class Produto{
public int id; public String descricao;
Meu Bean
@ManagedBean(name = “CarrinhoMB”) @SessionScoped public class carrinhoMB {//Carrinho de compras private ItemDoPedido item = new ItemDoPedido(); private ItemdoPedidoDAO idao = new ItemdoPedidoDAO(); private List<ItemDoPedido> carrinho = new ArrayList<>(); //Lista de produtos private Produto produto; private List<Produto> produtos; private ProdutoDAO pDAO = new ProdutoDAO();//getters and setter feitos
public carrinhoMB() { produto = new Produto(); produtos = pDAO.MostrarProdutos(); } public void adicionarCarrinho(Produto produto) { //inserindo duplicado item.setP(produto); item.setQuantidade(1); carrinho.add(item); }
Minha tela.xhtml
<p:panel header=“Produtos disponíveis”> <p:dataTable var=“produto” value="#{produtoMB.produtos}" scrollable=“true” scrollWidth=“1200px” scrollHeight=“200”> <p:column headerText=“Id”> <h:outputText value="#{produto.id}" /> </p:column><p:column headerText="Descrição"> <h:outputText value="#{produto.descricao}" /> </p:column> <p:column headerText="Adicionar"> <p:commandButton value="Adicionar" id="carrinho" action="#{CarrinhoMB.adicionarCarrinho(produto)}" styleClass="ui-priority-primary" ajax="false"/> </p:column> </p:dataTable> </p:panel> <br></br> <br></br> <p:panel header="Carrinho"> <p:dataTable var="carrinho" value="#{CarrinhoMB.carrinho}"> <p:column headerText="ID Produto"> <h:outputText value="#{carrinho.p.id}" /> </p:column> <p:column headerText="Produto"> <h:outputText value="#{carrinho.p.descricao}" /> </p:column> <p:column headerText="Quantidade"> <h:outputText value="#{carrinho.quantidade}" /> </p:column> <p:column headerText="Aumentar"> <p:commandButton value="Aumentar" id="aumentar" action="#{CarrinhoMB.aumentar()}" styleClass="ui-priority-primary" ajax="false"/> </p:column> <p:column headerText="Diminuir"> <p:commandButton value="Diminuir" id="diminuir" action="#{CarrinhoMB.diminuir()}" styleClass="ui-priority-primary" ajax="false"/> </p:column> <p:column headerText="Excluir"> <p:commandButton value="Excluir" id="excluir" action="#{CarrinhoMB.removerCarrinho()}" styleClass="ui-priority-primary" ajax="false"/> </p:column> </p:dataTable> <br></br> <br></br> <p:commandButton value="Finalizar" id="finalizar" action="#{CarrinhoMB.finalizarCarrinho()}" styleClass="ui-priority-primary" ajax="false"/>
Ele fica assim, eu escolhi três produtos diferentes, sendo o último borracha.

