@Validated 어노테이션이 달린 @RestController에서 @Valid 어노테이션이 달린 간단한 요청 본문의 유효성을 검사하려고 합니다. 유효성 검사는 요청의 기본 변수(아래 예의 연령)에서 올바르게 작동하지만 pojo 요청 본문에서는 작동하지 않습니다. @Valid 어노테이션은 요청 본문 Person 클래스에 영향을 미치지 않습니다(즉, 컨트롤러는 공백 이름 및 18세 미만 연령 허용).
사람 등급:
import javax.validation.constraints.Min
import javax.validation.constraints.NotBlank
class Person (
@NotBlank
val name : String,
@Min(18)
val age : Int
)
컨트롤러 클래스:
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController
import javax.validation.Valid
@RestController
@Validated
class HomeController {
@GetMapping("/{age}")
fun verifyAge(@PathVariable("age") @Min(18) age:Int): String {
return "Eligible age."
}
@PostMapping
fun personValidation(@Valid @RequestBody person : Person) : String {
return "No validation error"
}
}
@NotBlank, @Min 및 @Valid 어노테이션은 아래 의존성에서 가져왔습니다.
implementation("org.springframework.boot:spring-boot-starter-validation:2.3.0.RELEASE")
@Validated 컨트롤러의 Person 요청 본문에서 @Valid를 작동시키는 방법은 무엇입니까?