예를들어 "가격은 1000원 이상", "가격은 1000원 이상이어야 합니다." 와 같이 우리는 똑같은 오류라도 종종 다르게 표시할 때가 있다.
이럴경우 사용자의 요구사항이 변경되었거나 수정해야할 일이 생겼을 때 모두 바꿔줘야 하는 번거러움이 생길 수 있다. 따라서 오류 코드를 관리함으로써 이러한 불편 사항들을 해결할 수 있다.
- objectName : 오류가 발생한 객체 이름
- field : 오류 필드
- defaultMessage : 기본 오류 메시지
- rejectedValue : 사용자가 입력한 값(거절된 값)
- bindingFailure : 타입 오류 같은 바인딩 실패인지, 검증 실패인지 구분 값
- codes : 메시지 코드
- arguments : 메세지에서 사용하는 인자
앞에서 얘기 했던 것 처럼 FieldError의 Parameter에는 위와 같은 속성이 있는데 codes와 arguments 필드는 오류 발생 시 오류 코드로 메시지를 찾기 위해 사용된다. 우리는 이 두개의 필드를 이용하여 오류 코드를 관리 할 수 있다.
우리는 에러코드를 따로 관리 하기 위해 errors.properties를 만든 후 applicaiton.properties에 errors를 추가해준다. (messages가 default)
그 이후에 errors.properties에 위와 같이 오류 메시지들을 추가해준다.
FieldError에 errors.properties에 작성했던 코드를 넣어준다.
cf) Stirng[] 배열로 받는 이유는 메시지 코드는 하나가 아니라 여러 값을 전달할 수 있기 때문이다. 이 때 메시지 코드는 순서대로 매칭해서 처음 매칭되는 메시지가 사용된다.
변수의 값이 필요한 경우에는 arguemtents에 해당하는 변수 값을 넣어준다.
ex) Object[]{1000,1000000} -> totalPriceMin의 {0}, {1} 로 치환할 값을 전달
출처 : 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술