1. Test(assertj 사용)
실 코드에 적용시키기 전, 먼저 Test를 해보자
test => itemservice => validation에 MessageCodesResolverTest 클래스를 만든다
2. MessageCodesResolver
동작방식
- rejectValue() , reject() 는 내부에서 MessageCodesResolver 를 사용한다. 여기에서 메시지
코드들을 생성한다. - FieldError , ObjectError 의 생성자를 보면, 오류 코드를 하나가 아니라 여러 오류 코드를 가질 수 있다.
MessageCodesResolver 를 통해서 생성된 순서대로 오류 코드를 보관한다. - 이 부분을 BindingResult 의 로그를 통해서 확인해보자.
codes [range.item.price, range.price, range.java.lang.Integer, range]
FieldError rejectValue("itemName", "required")
다음 4가지 오류 코드를 자동으로 생성
- required.item.itemName
- required.itemName
- required.java.lang.String
- required
ObjectError reject("totalPriceMin")
다음 2가지 오류 코드를 자동으로 생성
- totalPriceMin.item
- totalPriceMin
오류 메시지 출력
타임리프 화면을 렌더링 할 때 th:errors 가 실행된다. 만약 이때 오류가 있다면 생성된 오류 메시지
코드를 순서대로 돌아가면서 메시지를 찾는다. 그리고 없으면 디폴트 메시지를 출력한다.
'Languages | Frameworks > Spring' 카테고리의 다른 글
스프링이 직접 만든 오류 메시지 처리 - 타입 에러처리 (0) | 2022.03.21 |
---|---|
ValidationUtils (0) | 2022.03.21 |
BindingResult(rejectValue(), reject())사용하기 -3 + MessageCodesResolver 소개 (0) | 2022.03.21 |
BindingResult -2 (0) | 2022.03.21 |
BindingResult(error 출력시 유용) -1 (0) | 2022.03.21 |