원인 :
@RequestMapping(value="/deleteCategoryDetail.do")
public String deleteCategoryDetail(CategorydetailVO cdVO,CategoryVO cVO) {
int categorynum = cdVO.getCategoryNum();
cdVO.setSearchCondition("CDNUM");
if(categoryDetailService.delete(cdVO)) {
cdVO.setSearchCondition("ADMIN");
cdVO = categoryDetailService.selectOne(cdVO);
if(cdVO == null) {
/*
CategorydetailVO cddata = new CategorydetailVO();
cddata.setCategoryNum(categorynum);
cddata.setCategoryDetailName("-");
System.out.println("cdVO : "+cddata);
categoryDetailService.insert(cddata);
*/
cdVO.setCategoryNum(categorynum);
cdVO.setCategoryDetailName("-");
System.out.println("cdVO : "+cdVO);
categoryDetailService.insert(cdVO);
}
return "categoryListPage.do";
}
return "adminMain.do";
- selectOne을 수행해서 세부카테고리정보를 불러올때 cdVO에 할당 한 후 그 결과를 두번째 조건문 안에서 검사하는데 이때 cdVO는 무조건 null이 나옴
- 세부카테고리가 없을 경우는 null인데 그 결과를 다시 cdVO에다 대입을 하면 cdVO가 null로 변해버리고 그걸 검사하기 때문에
- cdVO.setCategoryNum(categorynum);
에서 cdVO가 무조건 null인 상황
해결:
@RequestMapping(value="/deleteCategoryDetail.do")
public String deleteCategoryDetail(CategorydetailVO cdVO,CategoryVO cVO) {
int categorynum = cdVO.getCategoryNum();
cdVO.setSearchCondition("CDNUM");
if(categoryDetailService.delete(cdVO)) {
cdVO.setSearchCondition("ADMIN");
if(categoryDetailService.selectOne(cdVO) == null) {
/*
CategorydetailVO cddata = new CategorydetailVO();
cddata.setCategoryNum(categorynum);
cddata.setCategoryDetailName("-");
System.out.println("cdVO : "+cddata);
categoryDetailService.insert(cddata);
*/
cdVO.setCategoryNum(categorynum);
cdVO.setCategoryDetailName("-");
System.out.println("cdVO : "+cdVO);
categoryDetailService.insert(cdVO);
}
return "categoryListPage.do";
}
return "adminMain.do";
selectOne으로 불러온 결과를 cdVO객체에 대입을 하지않고 바로 조건 검사 함
- cdVO에 변화가 없기 때문에 cdVO.setCategoryNum(categorynum); 에서 cdVO가 무조건 null이 아님