关于第四个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中当然就会报空指针异常。真是照着代码敲都会敲错,哈哈
00
相似问题