validation - 유효성검사
- 즉 jsp에서 아이디 입력해주세요. 표시하는
trim - 앞뒤 공백제거
BindingResult - 유효성검사를 저장하는 객체.
- validation 안에선 errors를,
controller 안에선 Binding Resolve사용한다

Code는 MemberInfo 타입의 객체를 검증하는 Validator의 구현 예를 보여주고 있다.
supports() 메서드는 검증할 객체의 타입(Class) 정보를 파라미터로 전달받는데, 위의 Code는 검사 대상 객체의
MemberInfo Class 또는 그 하위 Class인지의 여부를 검사한다.
validate() 메서드는 두 개의 파라미터를 전달받는데, 첫 번째는 검사할 객체이고, 두 번째는 에러 정보를 저장하기 위한
Errors 객체이다.
Code에서는 첫 번째 파라미터를 MemberInfo 타입으로 변환한 뒤에 값을 검사한다.
값이 올바르지 않다면 관련 정보를 Errors 객체에 저장한다.
19~20은 id 프로퍼티가 필수 입력인 경우의 처리 예를 보여주고 있다.
errors.rejectValue() 메서드는 “id” 프로퍼티의 값이 올바르지 않고 에러 Code는 "required" 라는 것을 기록한다.
에러 Code는 뷰에서 에러 Message를 출력할 때 사용된다.
Errors Interface 와 BindingResult Interface
org.springframework.validation.Errors Interface는 유효성 검증 결과를 저장할 때 사용되며, org.springframework.validation.BindingResult Interface는Errors Interface의 하위Interface로서 폼 값을 커맨드 객체에 바인딩(binding)한 결과를 저장하고 에러 Code로부터 에러 Message를 가져온다.
Errors Interface는 값이 올바르지 않을 경우 reject()또는 rejectValue()메서드를 이용해서 어떤 필드가 값이 잘못 되었으며, 관련된 에러 Code가 무엇인지 입력받는다.
reject() 메서드는 검증 대상 객체의 전체적인 에러를 설정하며, rejectValue()메서드는 특정 프로퍼티(필드)의 검증 에러를 설정한다.
Errors Interface가 제공하는 reject()메서드 및 rejectValue()메서드는 다음과 같다. 각 메서드의 리턴 타입은 void이다.

reject() 메서드는 객체 자체의 에러 정보를 추가할 때 사용된다.
예를 들어, 로그인을 처리하는 경우 아이디와 암호가 일치하지 않아서 로그인 폼을 보여주고, 에러 정보를 출력해 주곤 한다.
아이디 필드나 암호 필드 자체에 에러가 있다기 보다는 객체 자체에 문제가 있는 것이다. 이렇게 객체 자체에 문제가 있는 경우에는 아래 Code와 같이 reject() 메서드를 사용해서 글로벌 에러 정보를 추가할 수 있다.

rejectValue() 메서드는 객체의 개별 프로퍼티(필드)에 대한 에러 정보를 추가할 때 사용된다.
글로벌 에러 정보나 특정 필드에 대한 에러 정보는 두 번 이상 추가될 수 있다. 예를 들어, 다음과 같이 특정 필드에 대해 에러 정보를 두 번 이상 등록할 수 있다.
errors.rejectValue("id", "id.invalidLength");
errors.rejectValue("id", "id.invalidCharacter");
두 개 이상의 에러 정보가 추가되면, 뷰에서 에러 Message를 보여줄 때 추가된 개수 만큼의 에러 Message가 출력된다.
'Java > SPRING' 카테고리의 다른 글
스프링 [Spirng] Tiles연동 (0) | 2021.12.28 |
---|---|
스프링 프레임워크 [Spring Framework] MVC 패턴중 VIEW 영역 (0) | 2021.12.27 |
스프링 프레임워크[Spring Framework] @PathVariable 어노텐션 (0) | 2021.12.23 |
스프링 프레임워크 [Spring Fremawork] 요청 URI 매칭 (0) | 2021.12.23 |
스프링 프레임워크 [Spring Framework] Controller(컨트롤러) 메서드의 리턴 타입 (0) | 2021.12.23 |