본문 바로가기
✨ Back-end/etc

[Spring] 검증(Validation) -3 , FieldError와 properties값 가져오기

by 환풍 2023. 9. 27.
728x90

 

 

 

[Spring] 검증(Validation) -2 BindingResult

MemberController BindingResult 데이터 바인딩 과정에서 발생하는 검증 오류를 보유하고 있는 객체이다. 주로 폼 데이터를 도메인 객체에 바인딩할 때 사용된다. 예를 들어, 사용자가 웹 폼을 통해 입력

bright-landscape.tistory.com

FieldError의 생성자 (2가지)

1. public FieldError(String objectName, String field, String defaultMessage);  <-  검증-2 에서 다뤘다.
2.
public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[ ] codes, @Nullable Object[ ] arguments, @Nullable String defaultMessage); 


  • objectName - 오류가 발생한 객체 이름
  • field - 오류 필드
  • rejectedValue - 사용자가 입력한 값
  • bindingFailure - 타입 오류 같은 바인딩 실패인지 검증 실패인지 구분하는 값
  • codes - 메시지 코드
  • arguments - 메시지에서 사용하는 인자
  • defaultMessage - 기본 오류 메시지

FieldError와 ObjectError 생성자는 errorCode와 arguments를 제공하는데, 이는 오류 발생시 오류 코드로 메시지를 찾기위해 사용한다.

 

errors.properties

resources 아래 경로에 errors.properties 를 하나 생성했다.

 

application.properties

spring.messages.basename=errors 

을 입력해주어야 errors.properties가 적용된다.

 

Controller

이후 new FieldError를 다른 생성자로 데이터를 넣어준 결과 어떻게 나오는지 확인해 보았다.

이때, 메시지 codes 값의 데이터는 errors.properties 에서 만들어준 코드를 넣어준 것이다.

 

이렇게 defaultMessage를 무시하고 codes에 넣은 데이터가 나온 것을 확인해볼 수 있다.

 

errors.properties

만약 이런식으로 {0} {1}과 같이 지정 숫자를 넣고 싶다면, arguments를 넣어주면 되는데

 

Controller

이렇게 arguments 자리에 new Object[ ] 를 생성해 { } 안에 입력할 숫자 두개를 넣어주면 된다.

 

하지만, 보다시피 너무 코드가 길어서 사용하기가 어렵다. 어떻게하면 더 줄여볼 수 있을까? 이어서 더 알아보자.

반응형

댓글