위와 같이 @NotBlank 검증에 실패하면 '공백일 수 없습니다.' 라는 검증 메시지를 볼 수 있다. 이제 스프링에서 검증 오류 코드를 보면
Field error in object 'item' on field 'itemName':rejected value []; codes
[NotBlank.item.itemName,NotBlank.itemName,NotBlank.java.lang.String,NotBlank];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes
[item.itemName,itemName]; arguments []; default message [itemName]]; default message [공백일 수 없습니다]
위와 같이 나타나는데 @NotBlank 어노테이션 역시 MessageCodesResolver를 통해
errorCode + objectName + fieldName --> NotBlank.item.itemName
errorCode + fieldName --> NotBlank.itemName
errorCode + fieldType --> NotBlank.java.lang.String
errorCode --> NotBlank
순으로 순서대로 rejectValue()에 담기는 걸 볼 수 있다.
#Bean Validation 추가
NotBlank.item.itemName=상품 이름을 적어주세요.
NotBlank={0} 공백 X
Range= {0}, {2} ~ {1} 허용
Max={0}, 최대 {1}
다음과 같이 errors.properties에 Bean Validation에 관한 메시지를 추가하였다.
이렇게 message를 등록하면 @NotBlank 검증 실패시 properties가 담긴 메시지를 볼 수 있다.
BeanValidation 메시지 또한 범용성으로 쓰일건지 구체적으로 쓰일건지 고려해서 LEVEL 단위로 분리해서 사용하면 좋다.
- 생성된 메시지 코드 순서대로 'MessageSource'에서 메시지 찾기
- 어노테이션의 'message' 속성 사용 -> @NotBlank(message= "공백 안되요")
- 라이브러리가 제공하는 기본 값 사용 -> 공백일 수 없습니다.
출처 : 스프링 MVC 2편 : 백엔드 웹 개발 활용 기술