关于第四个deep测试

来源:7-4 分类管理模块所有功能自测

饮茶仙人

2017-06-25

我用categoryId=0测试,服务器错误500,但是用categoryId=100001测试,返回正确

报错信息如下:

root cause

java.lang.NullPointerException
com.tmall.service.impl.CategoryServiceImpl.selectCategoryAndChildrenById(CategoryServiceImpl.java:82)
com.tmall.controller.backend.CategoryManageController.getCategoryAndDeepChildrenCategory(CategoryManageController.java:84)


以下是是我的源代码:

public ServerResponse selectCategoryAndChildrenById(Integer categoryId) {
   Set<Category> categorySet = Sets.newHashSet();
   findChildCategory(categorySet, categoryId);

   List<Integer> categoryIdList = Lists.newArrayList();
   if (categoryId != null) {
       for (Category categoryItem : categorySet){
           categoryIdList.add(categoryItem.getId());
       }
   }
   return ServerResponse.createBySuccess(categoryIdList);
}

//递归算法,算出子节点
private Set<Category> findChildCategory(Set<Category> categorySet, Integer categoryId) {
   Category category = categoryMapper.selectByPrimaryKey(categoryId);
   categorySet.add(category);

   List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
   for (Category categoryItem :
           categoryList) {
       findChildCategory(categorySet, categoryItem.getId());
   }
   return categorySet;
}

写回答

1回答

饮茶仙人

提问者

2017-06-25

我找到错误点了,真脑残,findChildCategory(Set<Category> categorySet, Integer categoryId) 方法里没有判断根据categoryId查出来的category是不是为空,因为数据库中本来就不存在categoryId=0的数据,所以直接把他添加进set中当然就会报空指针异常。真是照着代码敲都会敲错,哈哈

0
0

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程