Spring 500에러 : java.lang.NullPointerException

stan·2023년 9월 12일
0

에러 오류 예외

목록 보기
11/12

원인 :

	@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이 아님

profile
이진 입니다

0개의 댓글