spring - @Valid 在@RestController 上没有@Validated 是否可以工作?
问题描述
在以下博客条目中。
https://www.baeldung.com/spring-boot-bean-validation
作者提到了 Spring Boot 如何使用@Valid
注解。
@RestController
public class UserController {
@PostMapping("/users")
ResponseEntity<String> addUser(@Valid @RequestBody User user) {
// persisting the user
return ResponseEntity.ok("User is valid");
}
// standard constructors / other methods
}
当 Spring Boot 找到使用 @Valid 注释的参数时,它会自动引导默认的 JSR 380 实现——Hibernate Validator——并验证该参数。
在没有的情况下@Valid
按预期工作是真的吗?@RestController
@Validated
那么什么样的立体类型需要显式注释@Validated
呢?
解决方案
Yes@Valid
可以在没有@Validated
in 的情况下工作@RestController
。
在 Spring 中,我们使用 JSR-303 的 @Valid 注解进行方法级验证。此外,我们还使用它来标记成员属性以进行验证。但是,此注释不支持组验证。组有助于限制验证期间应用的约束。一个特定的用例是 UI 向导。在这里,在第一步中,我们可能有一个特定的字段子组。在后续步骤中,可能有另一个组属于同一个 bean。因此,我们需要在每个步骤中对这些有限字段应用约束,但 @Valid 不支持这一点。在这种情况下,对于组级别,我们必须使用 Spring 的 @Validated,它是此 JSR-303 的 @Valid 的变体。这是在方法级别使用的。而对于标记成员属性,我们继续使用@Valid 注解。
您可以在此链接中阅读有关此内容的更多信息。
推荐阅读
- apache-kafka - Kafka ConsumerInterceptor 所需的配置
- angular - 未捕获(承诺):TypeError:无法读取角度 10 中未定义的属性“ɵcmp”
- jsf - JSF 为数据表中的输出文本添加前缀
- r - R、sf、st_write、ESRI Shapefile 驱动程序和 GDAL 选项
- winapi - 通过 CancelIoEx 取消 I/O 时,GetQueuedCompletionStatus 返回什么?
- java - 如何使用 Java 中的 actionlistener 按字母顺序对联系人列表进行排序?
- python - Jaxlib pip 安装失败
- asp.net-core - MVC Core. RedirectToAction(action, controller, routeValues, fragment). Access fragment parameter value in target Action
- java - ByteArrayOutputStream 写入 IndexOutOfBoundsException
- julia - 在 Julia 中检查对角支配矩阵