반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[SpringBoot] java.lang.IllegalStateException: Optional int parameter 'reportNo' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.. 본문

⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆/Error

[SpringBoot] java.lang.IllegalStateException: Optional int parameter 'reportNo' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type..

yeonee 여니 2023. 9. 10. 15:02
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

yeonee 블로그 : 네이버 블로그

예쁘고 맛있게 먹고 건강하게,강인하지만 온화하게 행하라. ※맛스타운스타일상 인스타 www.instagram.com/s2._.y25n ※맛집감성일상 유튜브https://youtube.com/channel/@S2_yeonee 티스토리https://yeoneeluv.tistory.co

blog.naver.com

 

 

이번 SNS소셜네트워크 주제의 프로젝트에서 관리자 페이지를 맡게 되었고, 먼저 관리 페이지들 중 신고관리 페이지의 상세 조회시 새로운 창에 띄우는 것이 아닌 사이드 박스에 내용을 출력할 UI를 짰어요.

 

저는 reportNo를 가지고 체크 박스를 통해 삭제를 할 수 있도록 하고, 해당 게시글 목록을 클릭시 사이드 박스에 해당 신고 게시글의 상세 내역이 뜨도록 구현할 예정이랍니다.

 

에러 내용을 클릭해보니 안에 내용들이 뜨는데 이렇게 봐서는 잘 모르겠더라구요. 그래서 구글 검색을 해보았습니다.

 

[ 수정 전 ]

@PostMapping("/detailReport")
	public String detailReport(
			@RequestParam("reportNo") int reportNo,
			Model model
			) {
 .. 이하 생략

먼저 상세조회 기능을 구현할 예정인데요, 위와 같이 매개변수로 reportNo를 이용하여 로직을 짜려고 했었는데.
해당 게시글을 클릭시 그에 맞는 reportNo가 출력되었지만, 서버측 콘솔창에 500에러가 함께 뜨면서 sts 콘솔창에는 아래와 같은 에러가 떴어요.

 

[ 에러 내용 ]

java.lang.IllegalStateException: Optional int parameter 'reportNo' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type

 

[ 구글 번역 ] 

구글 번역을 해보니, reportNo가 파라미터 속성으로 넘어오지만, 값이 없어 null처리를 하려고 했으니 int라서 타입이 맞지 않아 변환이 안된다는 에러인 것 같았다.

선택적 int 매개변수 'reportNo'가 있지만 기본 유형으로 선언되었기 때문에 널값으로 변환할 수 없습니다. 해당 기본 유형에 대한 객체 래퍼로 선언하는 것을 고려하세요.

 

[ 오류 분석 ]

즉, reportNo라는 이름의 파라미터 값을 받으려고 하는데 해당 값이 정수형 기본 타입인  int형 변수이고 null값을 받을 수 없으니 Wrapper타입(Integer)으로 선언해라 라는 말입니다.

이후 좀 더 자세히 에러내용이 비슷한 분들의 사례를 찾아보니,
컨트롤러에서 읽어들일때 요청정보 헤더의 URI 에서 reportNo라는 Parameter를 찾는데, 만약 주소창에 QueryString이 없는 경우 컨트롤러는 해당 Parameter 값이 곧 null 임으로 인식한다고 하네요.

서버측에서는 설정되어 있는 파라미터 값인 reportNo를 받지 못했으므로 500에러를 터뜨립니다. 보내는 쪽에서 파라미터를 잘못 담아 보내는 에러이기 때문에 클라이언트 쪽에서 넘겨주고 있는 파라미터와 보내는 쿼리스트링을 잘 확인하고 수정해야겠습니다.

 

[ 수정 후 ]

@PostMapping("/detailReport")
	public String detailReport(
			Model model
			) {
... 이하 생략

매개변수로 주었던 reportNo를 삭제하였고, 서버측 500 에러가 사라진 것을 볼 수 있습니다.

 

728x90
반응형
LIST