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

Aula 13 - NullPointerException

Senhores boa tarde

Estou tentando adicionar um produto no carrinho de compras mas toda vez que tento fazer isso tomo um NullPointer no metodo getTotal,

De acordo com o video no metodo getQuantidade devemos deixar o retorno do metodo como Integer para caso retorne Null nao termos esse tipo de problema.

Estou colocando abaixo a stacktrace, revi o video algumas vezes mas não consigo localizar o problema.

public Integer getQuantidade(CarrinhoItem item) {

        if (!itens.containsKey(item)) {
            itens.put(item, 0);
        }

        return itens.get(item);
    }

Metodo que está lançando o NPE

public BigDecimal getTotal(CarrinhoItem item){
        return item.getTotal(getQuantidade(item));
    }

java.lang.NullPointerException br.com.casadocodigo.loja.model.CarrinhoCompras.getTotal(CarrinhoCompras.java:48) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) javax.el.BeanELResolver.invoke(BeanELResolver.java:183) org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:139) org.apache.el.parser.AstValue.getValue(AstValue.java:174) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:950) org.apache.jsp.WEB_002dINF.views.carrinho.itens_jsp._jspx_meth_c_005fforEach_005f0(itens_jsp.java:408) org.apache.jsp.WEB_002dINF.views.carrinho.itens_jsp._jspService(itens_jsp.java:229) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

6 respostas

Você até já identificou o ponto do problema. Tem que ver se é o item que ta nulo, se é o getQuantidade que ta retornando nulo.. Joga uns syso ou debuga..

Alberto beleza ?

Debuggei o código e o item é que esta vindo nulo. Olhei a aula mais algumas vezes e não consigo identificar algo diferente.

Tem que ver no controller, que deve ser onde vc chama o método, o que ta acontecendo. Talvez alguma busca retornando nulo ou algo assim...

Alberto fiz um teste tirando o td e colocando input não ocorre mais erro na jsp mas o getTotal não trás informação. Mesmo estando igual ao do professor.

é... complicou, que algum parâmetro não está indo já é certo. Igual sabemos que não está, dado que não está funcionando.. se quiser subir em algum github, posso tentar testar.

solução!

Alberto boa noite

Finalmente consegui arrumar rs.. estava faltando a informação abaixo

                            <td class="numeric-cell">${carrinhoCompras.total}</td>

só não entendi direito como a view quebrava sem essa informação no getTotal, você saberia me explicar?

Obrigado.