请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

add.do测试报500 Internal Server Error

Apache Tomcat/7.0.75 - Error report

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


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:943)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

root cause

java.lang.NullPointerException
	com.mmall.service.impl.CartServiceImpl.getCartVoLimit(CartServiceImpl.java:151)
	com.mmall.service.impl.CartServiceImpl.list(CartServiceImpl.java:82)
	com.mmall.service.impl.CartServiceImpl.add(CartServiceImpl.java:57)
	com.mmall.controller.portal.CartController.add(CartController.java:45)
	sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:606)
	org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.75 logs.


Apache Tomcat/7.0.75

正在回答 回答被采纳积分+3

2回答

提问者 慕仔7417462 2020-06-08 21:41:56

private CartVo getCartVoLimit(Integer userId){
   CartVo cartVo = new CartVo();
   List<Cart> cartList = cartMapper.selectCartByUserId(userId);
   List<CartProductVo> cartProductVoList = Lists.newArrayList();

   BigDecimal cartTotalPrice = new BigDecimal("0");

   if(CollectionUtils.isNotEmpty(cartList)){
       for(Cart cartItem : cartList){
           CartProductVo cartProductVo = new CartProductVo();
           cartProductVo.setId(cartItem.getId());
           cartProductVo.setUserId(userId);
           cartProductVo.setProductId(cartItem.getProductId());

           Product product = productMapper.selectByPrimaryKey(cartItem.getProductId());
           if(product != null){
               cartProductVo.setProductMainImage(product.getMainImage());
               cartProductVo.setProductName(product.getName());
               cartProductVo.setProductSubtitle(product.getSubtitle());
               cartProductVo.setProductStatus(product.getStatus());
               cartProductVo.setProductPrice(product.getPrice());
               cartProductVo.setProductStock(product.getStock());
               // 判断库存
               int buyLimitCount = 0;
               if(product.getStock() >= cartItem.getQuantity()){
                   // 库存充足的时候
                   buyLimitCount = cartItem.getQuantity();
                   cartProductVo.setLimitQuantity(Const.Cart.LIMIT_NUM_SUCCESS);
               }else{
                   buyLimitCount = product.getStock();
                   cartProductVo.setLimitQuantity(Const.Cart.LIMIT_NUM_FAIL);
                   // 购物车中更新有效库存
                   Cart cartForQuantity = new Cart();
                   cartForQuantity.setId(cartItem.getId());
                   cartForQuantity.setQuantity(buyLimitCount);
                   cartMapper.updateByPrimaryKeySelective(cartForQuantity);
               }
               cartProductVo.setQuantity(buyLimitCount);
               // 计算总价
               cartProductVo.setProductTotalPrice(BigDecimalUtil.mul(product.getPrice().doubleValue(),cartProductVo.getQuantity()));
               cartProductVo.setProductChecked(cartItem.getChecked());
           }

           if(cartItem.getChecked() == Const.Cart.CHECKED){
               // 如果已经勾选,增加到整个的购物车总价中
               cartTotalPrice = BigDecimalUtil.add(cartTotalPrice.doubleValue(),cartProductVo.getProductTotalPrice().doubleValue());(这个就是第151行)
           }
           cartProductVoList.add(cartProductVo);
       }
   }
   cartVo.setCartTotalPrice(cartTotalPrice);
   cartVo.setCartProductVoList(cartProductVoList);
   cartVo.setAllChecked(this.getAllCheckedStatus(userId));
   cartVo.setImageHost(PropertiesUtil.getProperty("ftp.server.http.prefix"));

   return cartVo;

}

private boolean getAllCheckedStatus(Integer userId){
   if(userId == null){
       return false;
   }
   return cartMapper.selectCartProductCheckedStatusByUserId(userId) == 0;
}

0 回复 有任何疑惑可以回复我~
geelylucky 2020-06-08 18:44:24

同学,看报错信息:CartServiceImpl.getCartVoLimit(CartServiceImpl.java:151)

在CartServiceImpl这个类的第151行报空指针异常了,检查一下哪个对象为空

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仔7417462 #1
    cartTotalPrice = BigDecimalUtil.add(cartTotalPrice.doubleValue(),cartProductVo.getProductTotalPrice().doubleValue());
    这是第151行,和老师的代码一样,不知道哪里出错了
    回复 有任何疑惑可以回复我~ 2020-06-08 21:27:36
  • geelylucky 回复 提问者 慕仔7417462 #2
    同学,这个需要服务启动的时候通过debug找出那个空对象,光看代码是不行的
    回复 有任何疑惑可以回复我~ 2020-06-11 10:32:27
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信