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

Problema Spring Controller - nullpointer

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));
    }
8 respostas

Segue o link do promote no Git: https://github.com/didiomelo/didiomelo.git

Help me guys :D

Edvaldo,

Provavelmente você tem algum produto cadastrado na base sem preço. Dá uma olhada na sua tabela se tem algum item sem preço e remove ele da base.

Abraço!

Oi Joviane. Agradeço seu help, mas infelizmente o problema persiste :( . Tinha realmente um item sem preço, apaguei, mas me da ainda o mesmo erro. Realmente não estou entendendo qual pode ser o problema. Se eu apago na jsp a referencia do carrinho funciona, mas com a referencia da nullPointer.

${carrinhoCompras...

Agradeço sua ajuda. Obrigado

Ola pessoal. Alguem pode me dar uma ajuda por favor? :( Não estou conseguindo resolver. Agradeço. Abs

solução!

Oi Edvaldo,

Tenta limpar sua base e cadastrar produtos novos. Deve ter mais algum item inconsistente e por isso você está tomando este erro.

Se mesmo assim ocorrer erro, posta o link do github do seu projeto para que eu possa dar uma olhada?

Abraço!

Ola Joviane. Agradeço seu help. Retomei os estudos agora, eu estava de ferias :D Limpei o DB e cadastrei 1 novo produto, mas o problema persiste. Abaixo o erro e o link do git, agradeço a força. Abs

https://github.com/didiomelo/didiomelo.git

java.lang.NullPointerException
    br.com.casadocodigo.loja.models.CarrinhoCompras.getTotal(CarrinhoCompras.java:45)
    br.com.casadocodigo.loja.models.CarrinhoCompras$$FastClassBySpringCGLIB$$40fb54e8.invoke(<generated>)
    org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
    org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
    br.com.casadocodigo.loja.models.CarrinhoCompras$$EnhancerBySpringCGLIB$$b533b6dc.getTotal(<generated>)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

Oi Edvaldo,

Tenta limpar sua base e cadastrar produtos novos. Deve ter mais algum item inconsistente e por isso você está tomando este erro.

Se mesmo assim ocorrer erro, posta o link do github do seu projeto para que eu possa dar uma olhada?

Abraço!