해당 페이지에 접속할 때 찜하기 값 검증결과를 화면단으로 넘겨주기 위해 코드를 작성했다.
세션값을 불러와서 회원번호, 룸번호를 파라미터로 검증 결과를 int형으로 받은 후 세팅해준 후 화면을 확인했다.
결과는 500 에러 화면이였다.
java.lang.NullPointerException
기능들을 구현하면서 많이봤던 오류다.
오류를 불러일으킨 코드는 밑의 코드다.
int markNum;
if( 0 < (int) session.getAttribute("member_no") ) {
int memberNo = (int) session.getAttribute("member_no");
markNum = sRoomService.getMark(memberNo, b_no);
model.addAttribute("markCount", markNum);
} else {
markNum = 0;
}
회원번호가 0보다 클 때만, 찜하기 검증코드를 실행하도록 작성했지만..
검색도 해보고 고민해보니 원인을 찾았다.
원인은 세션값이 null 인데 if문 조건의 세션을 int로 형변환하여 처리했다.
int는 null일 수가 없다. 그래서 코드를 다음과 고쳤더니 비로그인 상황에서도 해당페이지 접속이 아주 잘되었다.
int markNum;
if( session.getAttribute("member_no") != null ) { // int로 형변환하지 않고 null일경우로 설정해야됨
int memberNo = (int) session.getAttribute("member_no");
markNum = sRoomService.getMark(memberNo, b_no);
} else {
markNum = 0;
}
model.addAttribute("markCount", markNum);