Ola pessoal.
Estou com um problema de NullPointerException (mensagem abaixo), e não estou conseguindo entender porque não esta chegando no controller o dado/item no carrinho, quando clico no comprar (carrinho/add etc).
Agradeço o suporte/ajuda. Obrigado. Edvaldo
root cause java.lang.NullPointerException br.com.casadocodigo.loja.models.CarrinhoCompras.getTotal(CarrinhoCompras.java:44)
--> JSP ITENS
<tbody>
<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" readonly="readonly" 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="/excluir.png" alt="Excluir" title="Excluir" />
</form>
</td>
</tr>
</forEach>
</tbody>
<tfoot>
<tr>
<td colspan="3"><input type="submit" class="checkout" name="checkout" value="Finalizar compra" /></td>
<td class="numeric-cell">${carrinhoCompras.total}</td><td></td>
</tr>
</tfoot>
--> JSP DETALHE
<form action='<c:url value="/carrinho/add" />' method="post" class="container">
<ul id="variants" class="clearfix">
<input type="hidden" name="produtoId" value="${produto.id}" />
<c:forEach items="${produto.precos }" var="preco">
<li class="buy-option">
<input type="radio" name="tipo" class="variant-radio" id="tipo" value="${preco.tipo}" checked="checked" />
<label class="variant-label">
${preco.tipo}
</label>
<small class="compare-at-price"> --> ${preco.valor} </small>
</li>
</c:forEach>
<button type="submit" title="Compre o E-book">
Comprar
</button>
</ul>
</form>
/* CarrinhoCompras.java */
public BigDecimal getTotal(){
BigDecimal total = BigDecimal.ZERO;
for (CarrinhoItem item : itens.keySet()) {
total = total.add(getTotal(item));
}
return total;
}
public BigDecimal getTotal(CarrinhoItem item) {
return item.getTotal(getQuantidade(item));
}
}
/* CarrinhoItem */
public BigDecimal getPreco() {
return produto.precoPara(tipoPreco);
}
public BigDecimal getTotal(int quantidade) {
return this.getPreco().multiply(new BigDecimal(quantidade));
}