SPRING/스프링 MVC
핸들러 메소드 6부: @Validated
JUMP개발자
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;
}
}