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";
        }
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.