예제에서는 컨트롤러 메서드의 @ModelAttribute 매개변수에 @Valid를 선언합니다.
그리고 생성된 스프링 Validator 인터페이스의 구현체를 해당 컨트롤러 내의 @InitBinder가 선언된 메서드에 설정합니다. 그러면 커맨드 객체를 바인딩하는 WebDataBinder는 @InitBinder 메서드에서 등록된 Validator를 사용하여 모델을 검증하고, 그 결과를 BindingResult에 넣어 전달합니다. 따라서 메서드의 매개변수로 전달받는 BindingResult에는 이미 PersonValidator로 검증한 결과가 담깁니다.
webpage13_03.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>Validation</title>
</head>
<body>
<h3>유효성 검사</h3>
<form:form modelAttribute="person" method="post">
<p>이름:<form:input path="name"/> <form:errors path="name"/>
<p>나이:<form:input path="age"/> <form:errors path="age"/>
<p>이메일:<form:input path="email"/> <form:errors path="email"/>
<p><input type="submit" value="확인"/>
</form:form>
</body>
</html>
▲ 그림 13-8 실행 결과