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

HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

Estou com o seguinte erro na minha aplicação, quando tento adicionar um item ao carrinho ele apresenta o seguinte erro:

type Exception report

message Request processing failed; nested exception is java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NullPointerException
    br.com.curso.spring.loja.controllers.ComprasControllers.criaItem(ComprasControllers.java:33)
    br.com.curso.spring.loja.controllers.ComprasControllers.add(ComprasControllers.java:26)
    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)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.42 logs.

Minha classe ComprasControllers, onde é indicado que ocorre a excessão:

@Controller
@RequestMapping("/carrinho")
public class ComprasControllers {

    private ProdutoDAO prodDAO;

    @Autowired
    private CarrinhoCompras carrinho;

    @RequestMapping("/add")
    public ModelAndView add(Integer produtoId, TipoPreco tipoPreco){        
        ModelAndView modelAndView = new ModelAndView("redirect:/produtos");
        CarrinhoItem carrinhoItem = criaItem(produtoId, tipoPreco);    // Linha 26    
        carrinho.add(carrinhoItem);
        return modelAndView;
    }


    private CarrinhoItem criaItem(Integer produtoId, TipoPreco tipoPreco) {            
        Produto produto = prodDAO.find(produtoId);
        CarrinhoItem carrinhoItem = new CarrinhoItem (produto, tipoPreco); // Linha 33
        return carrinhoItem;
    }

}

Ja procurei nos fóruns mas não consigo achar uma solução, sou novo com java web então pode ser algo simples mas não estou conseguindo resolver.

2 respostas
solução!

Boa noite Theo, falta o @Autowired no ProdutoDao, por isso ele não está injetando e dá null pointer

Era exatamente a notação @Autowired que deixei passar. Obrigado..