如果@restcontroller上没有@validated,@valid可以工作吗?

6qftjkof  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(309)

在下面的博客中。
https://www.baeldung.com/spring-boot-bean-validation
作者提到了springboot如何与 @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 ?

bvhaajcl

bvhaajcl1#

@Valid 如果没有 @Validated@RestController .
在spring中,我们使用jsr-303的@valid注解进行方法级验证。此外,我们还使用它来标记成员属性以进行验证。但是,此注解不支持组验证。组有助于限制验证期间应用的约束。一个特殊的用例是ui向导。在这里,在第一步中,我们可能有一个特定的字段子组。在随后的步骤中,可能存在属于同一bean的另一个组。因此,我们需要在每个步骤中对这些有限的字段应用约束,但是@valid不支持这一点。在本例中,对于组级别,我们必须使用spring的@validated,这是jsr-303的@valid的一个变体。这是在方法级别使用的。对于标记成员属性,我们继续使用@valid注解。
你可以在这个链接中了解更多。

相关问题