Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao adicionar produto ao carrinho

Ao adicionar o produto no carrinho o programa quebra:

org.apache.jasper.JasperException: An exception occurred processing [/WEB-INF/views/carrinho/itens.jsp] at line [91]

88:                     width="71px" height="100px" />
89:             </td>
90:             <td class="item-title">${item.produto.titulo}</td>
91:             <td class="numeric-cell">${item.preco}</td>
92:             <td class="quantity-input-cell">
93:                 <input type="number" min="0" id="quantidade" name="quantidade" 
94:                     value="${carrinhoCompras.getQuantidade(item)}" />

O método getQuantidade:

public Integer getQuantidade(CarrinhoItem item) {
        if(!itens.containsKey(item)) {
            itens.put(item, 0);
        }
        return itens.get(item);
    }

    public int getQuantidade() {
        return itens.values().parallelStream().reduce(0, (proximo, acumulador) -> proximo + acumulador);
    }
3 respostas

Amigo, posta o stack completo do erro junto com o código do arquivo itens.jsp, por favor

O stack completo é muito extenso, em resumo:

Root Cause

javax.el.ELException: Error reading [preco] on type [br.com.casadocodigo.loja.models.CarrinhoItem]
    javax.el.BeanELResolver.getValue(BeanELResolver.java:98)
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:113)
Root Cause

java.util.NoSuchElementException: No value present
    java.base/java.util.Optional.get(Optional.java:148)
    br.com.casadocodigo.loja.models.Produto.precoPara(Produto.java:111)

For Each de Itens.jsp:

<c:forEach items="${carrinhoCompras.itens}" var="item">
        <tr>
            <td class="cart-img-col">
                <img src="http://cdn.shopify.com/s/files/1/0155/7645/products/css-eficiente-featured_large.png?v=1435245145" 
                    width="71px" height="100px" />
            </td>
            <td class="item-title">${item.produto.titulo}</td>
            <td class="numeric-cell">${item.preco}</td>
            <td class="quantity-input-cell">
                <input type="number" min="0" id="quantidade" name="quantidade" 
                    value="${carrinhoCompras.getQuantidade(item)}" />
            </td>
            <td class="numeric-cell">${carrinhoCompras.getTotal(item)}</td>
            <td class="remove-item">
                <form action="" method="POST">
                    <input type="image" src="${contextPath}/resources/imagens/excluir.png" 
                        alt="Excluir" title="Excluir" />
                </form>    
            </td>
        </tr>
    </c:forEach>
solução!

Copiei as classes Produto/CarrinhoItens/Carrinho do professor e a funcionou