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

코딩먹는하마님의 프로필 이미지

작성한 질문수

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

FieldError, ObjectError

price에 qq를 넣었을 때 오류 발생과정

23.04.07 00:40 작성

·

563

·

수정됨

0

@PostMapping("/add")
public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {

  if (item.getPrice()==null || item.getPrice() <1000 || item.getPrice() > 1000000){
            bindingResult.addError(new FieldError("item","price", item.getPrice(), false, null, null,"가격은 1,000 ~ 1,000,000 까지 허용합니다."));
        }
}

price에 qq를 넣으면 오류가 2개 발생합니다.

Field error in object 'item' on field 'price': rejected value [qq]; codes [typeMismatch.item.price,typeMismatch.price,typeMismatch.java.lang.Integer,typeMismatch]; 

Field error in object 'item' on field 'price': rejected value [null]; codes []; arguments []; default message [가격은 1,000 ~ 1,000,000 까지 허용합니다.]

addItemV2()메소드 발생 전 스프링에서 HTTP 전송을 통해 넘어온 itemName 데이터에 의한 FieldError,

그리고 addItemV2()메소드에서 같은 이유로 발생한 FieldError

 

먼저 스프링 FieldError의 rejectedvalue에는 qq가 들어갑니다.

(typeMismatch 오류가 발생하기전부터 알고있던)

그 다음 개발자가 직접 작성한 FieldError의 rejectedvalue에는 null 이 들어갑니다.

(Integer타입에 String 타입이 들어갔으므로)

그 다음 qq, null 중 bindingResult에 먼저 들어간 qq가 출력됩니다.

 

https://www.inflearn.com/questions/309088/bindingerror

이 글을 보다 질문 드립니다.

위와 같이 이해했는데 맞게 이해한 것 일까요??

답변 1

1

OMG님의 프로필 이미지

2023. 04. 08. 21:35

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

 

image

여기서 itemName이 아니라 price라면 이해하신게 맞습니다.
.
감사합니다.