인프런 커뮤니티 질문&답변

gayoung78님의 프로필 이미지
gayoung78

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

검증 직접 처리 - 개발

quantity 검증에 질문이 있습니다.

해결된 질문

작성

·

484

·

수정됨

1

안녕하세요. 우선 좋은 강의 감사드립니다.

수업을 따라 진행하다가, quantity 검증과 관련해 질문이 있습니다.

일부러 수량(quantity)에 큰 값을 넣어봤는데요, 저장을 누르면 이 숫자를 문자로 인식하는 것 같습니다. 99999로 입력하면 올바른 에러가 발생하는데요, 캡쳐본에 있는 값으로 넣게 되면

2023-01-23 12:23:56.797 WARN 21288 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors

Field error in object 'item' on field 'quantity': rejected value [9999999999999]; codes [typeMismatch.item.quantity,typeMismatch.quantity,typeMismatch.java.lang.Integer,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.quantity,quantity]; arguments []; default message [quantity]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'quantity'; nested exception is java.lang.NumberFormatException: For input string: "9999999999999"]]

이러한 에러가 발생하게됩니다.

혹시 이런 에러가 발생하는 이유가 있나요?

 

아 혹시 integer의 최대 숫자보다 커서 문자로 인식이되는건가요?

감사합니다.

답변 1

3

안녕하세요. gayoung78님, 공식 서포터즈 OMG입니다.
.

네 맞습니다. Integer의 범위를 넘어서 발생하는 오류입니다.

두 가지를 확인해보시면 좋을 것 같은데요.

1) 수량을 Int의 최대값과 최대값 +1 했을 시의 결과

Int 최대값: 2147483647

 

2) quantity를 Integer가 아닌 Long으로 했을 시의 결과

 

위의 두 가지를 한번 확인해보시면 명확한 원인을 직접 확인해보실 수 있을거라 생각합니다.


.
감사합니다.

gayoung78님의 프로필 이미지
gayoung78
질문자

정확하게 알려주셔서 감사합니다!

강의 수강 중 궁금한 부분은 오래 너무 고민하지마시고 질문 남겨주세요^^!

gayoung78님의 프로필 이미지
gayoung78

작성한 질문수

질문하기