我正在尝试验证一个由@Valid注释的@RestController中的@Valid注释注释的简单请求正文。验证在请求中的原语变量上工作正常(在下面的例子中在年龄上),但在pojo请求正文上不起作用。@Valid注释对请求body Person类没有影响(即控制器接受空白姓名和年龄在18岁以下)。
Person类:
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控制器中让@Valid working on Person请求正文?
发布于 2020-05-25 14:45:55
您可以尝试此选项。
请使用@PostMapping("/validateBody")这样的URL映射@PostMapping,然后尝试使用其URL。就像在https://reflectoring.io/bean-validation-with-spring-boot/上做的那样
https://stackoverflow.com/questions/61992596
复制相似问题