더북(TheBook)

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 파일로 되돌아갑니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.