Spring - Validation - 오류 코드와 메시지 처리2

현시기얌·2021년 7월 18일
0

Validation

목록 보기
3/8

1. FieldError, ObjectError 단점

위의 코드 처럼 파라미터도 너무 많고, 오류 코드를 자동화 하기 어렵다.
즉 다루기가 너무 번거롭다.

2. BingdingResult의 특징

BindingResult는 검증해야할 객체인 'target' 바로 다음에 온다.
--> 즉 BindingResult는 검증해야 할 객체가 item인 것을 알고 있고 따라서

new FiledError("item", .... ) 

처럼 objectName을 쓰지 않아도 된다는 것이다.

위의 코드 처럼 log를 찍어봐도 bindingResult는 검증 해야할 객체인 item에 대해 알고 있다.

3. rejectValue(), reject()

BindingResult가 제공하는 rejectValue(), reject()를 사용하면 FieldError, ObjectError를 직접 생성하지 않고 깔끔하게 검증 오류를 다룰 수 있다.

void rejectValue(@Nullable String field, String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage);
void reject(String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage);

- field : 오류 필드 명

- errorCode : 오류 코드

- errorArgs : 오류 메시지에서 변수를 치환하기 위한 값

- defaultMessage : 오류 메시지를 찾을 수 없을 때 사용하는 기본 메시지

cf) errorCode는 errors.properties에 등록된 오류 코드가 아닌 MessageCodesResolver를 위한 오류 코드이다.)

변경 후

FieldError에서 오류 코드를 다룰 때 range.item.price와 같이 모두 입력 했지만 rejectValue()에서는 range로 간단하게 입력했다.

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

profile
현시깁니다

0개의 댓글

관련 채용 정보