인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

예하님의 프로필 이미지

작성한 질문수

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

Validator 분리1

숫자입력 시 int 형 범위가 넘어가는 경우

작성

·

55

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예


[질문 내용]
안녕하세요 !! 영한님 강의로 열심히 공부하고 있는 한 사람입니다.

수량 입력할 때, 1111111111(11개) 를 입력했을 때, "숫자를 입력해주세요" 라는 오류 메시지가 뜨더라구요.

그래서 혹시 int 형 범위 문제인가 싶어서

2147483648(int 형 최대 범위 숫자 " + 1")를 넣어보니, 다시 "숫자를 입력해주세요" 오류 메시지가 나왔습니다. 따라서 int 형 범위를 넘어선 long 형 범위에 들어가면 숫자가 아니라고 판단하는 것 같더라구요.

사용자 입장에서 int 형 범위든 long 형 범위든 숫자를 입력한 건 맞는 사실이기에, 기존에 int 형 범위 숫자만 숫자로 인식하는 것이 아닌, long 형 범위에서도 숫자로 인식하여 "숫자를 입력해주세요" 라는 오류 메시지가 발생하지 않으려면 어떻게 해야하나요 ??

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 예하님.

입력된 숫자가 int의 범위를 넘어설 경우, 자바에서는 NumberFormatException이 발생하여 숫자가 아닌 것으로 처리됩니다. 따라서 “숫자를 입력해주세요”라는 에러 메시지가 뜨게 되는 것이죠. 이를 해결하기 위해서는 입력을 int가 아닌 long형으로 처리하도록 변경하는 것이 필요합니다.

관련하여 강조드리고 싶은 몇 가지 포인트가 있습니다:

  1. 데이터 타입 변경: 입력폼에서 주고받는 데이터 타입을 int에서 long으로 변경합니다. 이로써 자바에서 기본으로 처리 가능한 숫자 범위가 늘어나게 됩니다.

  2. Spring Validation 사용: 스프링 검증기를 사용하여 사용자 입력 값에 대한 검증 로직을 추가할 수 있습니다. 예를 들어 @NumberFormat 등의 어노테이션을 활용하여 형식 오류 시 사용자에게 보다 명확한 피드백을 주도록 설정할 수 있습니다.

  3. 수정된 코드 적용: 데이터 타입이 long으로 변경되었다면, 이전의 int 기반 검증 로직과 연관된 코드들도 함께 수정해야 합니다. 특히, 데이터 베이스에서도 int 대신 bigint 등의 데이터 타입을 사용할 수 있도록 조정합니다.

  4. Spring Boot 실행 설정 확인: Spring Boot를 이용한 설정이 적절하게 되어 있는지도 확인해 보세요. 예를 들어, 잘못된 데이터의 경우 특정 오류 메시지를 피드백하도록 설정할 수 있습니다.

관련된 예제나 설명을 확인하고 싶다면 다음의 기존 질문과 답변을 참고해 보세요.

숫자 입력 시 숫자로 인식하도록 하는 방법 - 인프런
해당 링크에서는 대량의 데이터를 처리할 때 발생할 수 있는 오류를 해결하기 위한 다양한 접근법을 논의하고 있습니다.

이제 활용할 수 있는 해결법과 이해에 도움이 될 정보를 안내드렸습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

예하님의 프로필 이미지

작성한 질문수

질문하기