Spring - Validation - FieldError

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

Validation

목록 보기
1/8

1. Spring의 Binding 오류 처리

- 타입 오류로 Binding에 실패하면 Spring은 FieldError를 생성하면서 사용자가 입력한 값을 넣어둔다. 그리고 해당 오류를 BindingResult에 담아서 컨트롤러에 호출한다.

- 따라서 타입 오류가 같은 Binding 실패시에도 사용자의 오류 메시지를 정상 출력할 수 있다.

2. FieldError 생성자

- FieldError는 두 가지 생성자를 제공한다.

public FieldError(String objectName, String field, String defaultMessage);
public FieldError(String objectName, String field, @Nullable Object rejeactedValue, 
		boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage);

첫번째 생성자는 오류가 발생하면 오류 메시지를 출력해주지만 사용자가 입력한 값이 유지되지 못한다.

ex) 가격을 입력하는 필드에 숫자가 아닌 문자가 입력 된다면 가격(Integer)은 문자(String)을 보관할 수 있는 방법이 없다. 때문에 문자로 입력된 값을 보관할 방법이 없어 값을 유지하지 못한다.

때문에 오류가 발생하더라도 사용자가 입력한 데이터 값을 유지할려면 두번째 생성자를 사용해야 한다.

cf) @Nullbale Object rejeactValue가 바로 오류 발생시 사용자 입력 값을 저장하는 필드이다. 우리는 rejectValue를 이용하여 문자로 입력된 값을 보관할 수 있어 값을 유지할 수 있게 되었다.

3. 파라미터 목록

- objectName : 오류가 발생한 객체 이름

- field : 오류 필드

- defaultMessage : 기본 오류 메시지

- rejectedValue : 사용자가 입력한 값(거절된 값)

- bindingFailure : 타입 오류 같은 바인딩 실패인지, 검증 실패인지 구분 값

- codes : 메시지 코드

- arguments : 메세지에서 사용하는 인자

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

profile
현시깁니다

0개의 댓글

관련 채용 정보