작성
·
585
·
수정됨
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
이 글을 보다 질문 드립니다.
위와 같이 이해했는데 맞게 이해한 것 일까요??