개발하는 자몽

Bean Validation - 에러 코드 본문

Java

Bean Validation - 에러 코드

jaamong 2023. 3. 10. 16:33

중요하지만, 까먹기 쉬운 내용인 것 같아서 정리해 놓는다.

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

섹션 5. 검증 2 - Bean Validation

 

 

Bean Validation이 기본으로 제공하는 오류 메시지를 변경해 보자

 

Bean Validation을 적용하고 bindingResult에 등록된 검증 오류 코드를 보면 typeMismatch와 유사하다. 

특정 오류 코드를 기반으로 MessageCodesResolver를 통해 다양한 메시지 코드가 순서대로 생성된다. (Level은 붙지 않고 NotBlank~ 부터 붙는다. 레벨은 구체적일수록 높다)

 

@NotBlank

  • Level 1 : NotBlank.item.itemName 
  • Level 2 : NotBlank.itemName
  • Level 3 : NotBlank.java.lang.Spring
  • Level 4 : NotBlank

 

@Range

  • Range.item.price
  • Range.price
  • Range.java.lang.Spring
  • Range

 

MessageCodesResolver를 통해 생성된 메시지 코드를 .properties(errors.properties)에 등록하자. 아래는 간단하게 작성한 것이다.

#===Bean Validation 추가===
#Level1
NotBlank.item.itemName=상품 이름을 입력해주세요.

#Level2, 3 생략

#Level4
NotBlank={0} 공백 X
Range={0}, {2} ~ {1} 허용
Max={0}, 최대 {1}

{0} : 필드명

{1}, {2}... : 각 애노테이션마다 다르다

 

이때 errors.properties를 적용하기 위해서는 application.properties에 아래와 같이 입력한다.

spring.messages.basename=errors

 

앞에서 언급된 typeMismatch는 예를 들면 Integer 필드에 String이 입력될 경우 발생하는데 스프링에서 자동으로 생성한다.

typeMismatch.java.lang.Integer=숫자를 입력해주세요.
typeMismatch=타입 오류입니다.

위 코드를 errors.properties에 작성한다. 작성하지 않으면 스프링에서 기본으로 제공하는 에러 메시지가 출력된다.

 

 

'Java' 카테고리의 다른 글

동시성 문제와 쓰레드 로컬  (0) 2023.03.22
Bean Validation - HTTP 메시지 컨버터  (0) 2023.03.13
Class.isAssignableFrom  (0) 2023.03.08
체크 예외, 언체크 예외  (0) 2022.09.22
isEqualTo, isSameTo, isInstanceOf  (0) 2022.08.11
Comments