➊ ConstraintValidator 인터페이스는 매개변수 두 개를 정의합니다. 첫 번째 매개변수는 유효성 검사를 위해 MemberIdValidator 클래스를 사용하는 사용자 정의 애너테이션을 지정합니다. 두 번째 매개변수는 사용자 정의 애너테이션이 붙는 도메인 클래스 Member의 멤버 변수 타입을 설정합니다.
➋ initialize() 메서드는 사용자 정의 애너테이션 @MemberId가 속성 값이 없기 때문에 구현 부분 없이 메서드만 선언합니다.
➌ isValid() 메서드는 ConstraintValidator<MemberId, String>에서 두 번째 매개변수 타입으로 정의한 도메인 클래스의 멤버 변수 값을 읽어 유효성 검사를 수행합니다. 유효성 검사에서 오류가 발생하면 false를 반환합니다.
Example02Controller.java
package com.springmvc.chap13;
...
@Controller
@RequestMapping("/exam02")
public class Example02Controller {
@GetMapping
public String showForm(Model model) {
model.addAttribute("member", new Member());
return "webpage13_02";
}
@PostMapping
public String submit(@Valid @ModelAttribute Member member, Errors errors) {
if (errors.hasErrors()) {
return "webpage13_02";
}
return "webpage13_result";
}
}