13.4.3 @InitBinder를 선언한 메서드 추가

    컨트롤러의 메서드 내에 바인딩되는 데이터의 유효성 검사를 하려면 매개변수에 @Valid를 선언하여 커맨드 객체의 속성 값을 전달받습니다. 그리고 @InitBinder 메서드를 정의하고 해당 메서드의 입력 매개변수로 전달된 WebDataBinder 객체를 사용하여 해당 Validator 인터페이스의 구현체를 설정합니다. @InitBinder가 선언된 메서드에 Validator를 미리 등록하면 해당 컨트롤러의 모든 메서드에서 유효성 검사 기능을 사용할 수 있기 때문에 편리합니다.

    @InitBinder 메서드를 정의하여 생성한 Validator 인터페이스의 구현체 BookValidator를 설정한 예를 살펴보겠습니다.

    @InitBinder를 적용한 예

    package com.springmvc.chap13;
    ...
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.WebDataBinder;
    import org.springframework.web.bind.annotation.InitBinder;
    
    @Controller
    @RequestMapping("/exam03")
    public class Example03Controller {
    
        @Autowired
        private PersonValidator personValidator;
    
        @GetMapping
        public String showForm(Model model) {
            model.addAttribute("person", new Person());
            return "webpage13_03";
        }
    
        @PostMapping
        public String submit(@Valid @ModelAttribute Person person, BindingResult result) {
            if (result.hasErrors()) {
                return "webpage13_03";
            }
            return "webpage13_result";
        }
    
        @InitBinder
        protected void initBinder(WebDataBinder binder) {
            binder.setValidator(personValidator);
        }
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.