13.2.2 @Valid를 이용한 유효성 검사
스프링 MVC에서는 컨트롤러의 요청 처리 메서드 내 바인딩되는 데이터의 유효성 검사를 위해 코드를 작성할 필요 없이 간단한 방법으로 요청 처리 메서드의 매개변수에 선언하는 @Valid를 제공합니다. @Valid를 이용하면 컨트롤러 내 요청 처리 메서드의 매개변수에 전달되는 폼 데이터 값에 대한 유효성 검사를 실행할 수 있습니다.
다음은 컨트롤러 내 요청 처리 메서드의 매개변수에 @Valid를 선언한 예입니다.
@Valid를 적용한 예
package com.springmvc.chap13;
...
@Controller
@RequestMapping("/exam01")
public class Example01Controller {
@GetMapping
public String showForm(Model model) {
model.addAttribute("product", new Product());
return "webpage13_01";
}
@PostMapping
public String submit(@Valid @ModelAttribute Product product, Errors errors) {
if (errors.hasErrors())
return "webpage13_01";
return "webpage13_result";
}
}
앞의 예제에서 @Valid가 선언된 커맨드 객체 product는 요청 처리 메서드가 호출되기 전에 자동으로 JSR-380 Validator로 유효성 검사를 진행합니다. 즉, 폼 페이지에서 입력된 값이 커맨드 객체 product로 매핑될 때 유효성 검사가 진행됩니다. 이때 오류가 발생하면 오류 결과 값은 Errors 타입의 errors 객체에 담기고 뷰 페이지 webpage13_01.jsp 파일로 되돌아갑니다.