-
핸들러 메소드 6부: @ValidatedSPRING/스프링 MVC 2021. 7. 3. 18:09
@Valid 관련 API DEPENDENCY
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency>
@Validated :
스프링 MVC 핸들러 메소드 아규먼트에 사용할 수 있으며, validation group이라는 힌트를 사용할 수 있다.
@Valid 애노테이션에는 그룹을 지정할 방법이 없다.
@Validated는 스프링이 제공하는 애노테이션으로 그룹 클래스를 설정할 수 있다.
아래와 같이 변수에 Validation 그룹을 설정할 수 있다.
public class Event { interface ValidateLimit {}; interface ValidateName {}; private int id; @NotNull(groups = ValidateName.class) private String name; @Min(value = 30, groups = ValidateLimit.class) private Integer limit; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getLimit() { return limit; } public void setLimit(int limit) { this.limit = limit; } }
아래와 같이 이름에 대해서만 Validation 체크를 할 수 있다.
@Controller public class SampleController { // 이름에 대해서만 Validation 체크를 함 @PostMapping("/events/valid") @ResponseBody public Event getEvent(@ModelAttribute @Validated(Event.ValidateName.class) Event event, BindingResult bindingResult) { if(bindingResult.hasErrors()) { System.out.println("======================="); bindingResult.getAllErrors().forEach(c->{ System.out.println(c.toString()); }); } return event; } }
'SPRING > 스프링 MVC' 카테고리의 다른 글
핸들러 메소드 8부: @SessionAttributes (0) 2021.07.04 핸들러 메소드 7부: 폼 서브밋 (에러 처리) (0) 2021.07.04 핸들러 메소드 5부: @ModelAttribute (0) 2021.07.03 핸들러 메소드 4부: 폼 서브밋 (타임리프) (0) 2021.07.03 핸들러 메소드 3부: @RequestParam (0) 2021.06.30