Pie*_*nes 3 bean-validation spring-boot
我不知道如何解决 Spring Boot 中的以下用例。事实上,我有一个 Spring Boot Rest Api(例如:),user-api具有以下控制器方法和参数的自定义验证器:
@PostMapping
public User createUser(@ValidZipCode @RequestBody @Valid User user){
return userService.saveUser(user);
}
Run Code Online (Sandbox Code Playgroud)
该类User是在外部依赖项中定义的(例如:user-model)。它有以下字段:
public class User {
@NotNull
private String firstName;
@NotNull
private String lastName;
private String zipCode;
// getters, setters ..
}
Run Code Online (Sandbox Code Playgroud)
在中,user-api我创建了以下自定义注释:
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = ZipCodeValidator.class)
public @interface ValidZipCode {
String message() default "Must be a valid zipCode. Found: ${validatedValue}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)
所以ZipCodeValidator实施:
public class ZipCodeValidator implements ConstraintValidator<ValidZipCode, User> {
private ZipCodeService zipCodeService;
@Override
public void initialize(ValidZipCode constraintAnnotation) { }
@Override
public boolean isValid(User user, ConstraintValidatorContext constraintValidatorContext) {
return !Objects.isNull(user.getZipCode()) ?
zipCodeService.isValidZipCode(user.getZipCode()) :
false;
}
Run Code Online (Sandbox Code Playgroud)
注意:zipCodeService.isValidZipCode()这是一个简单的boolean方法。
问题是,当我调用端点时,它永远不会访问@ValidZipCode注释。是否需要bean进行任何配置才能使其正常工作?
感谢您的帮助;)
更新
感谢@cassiomolin 的回答。事实上,当我用 It 注释控制器类时@Validated:D
我希望这篇文章能够帮助其他开发者;)
确保您的控制器类带有注释@Validated。
请参阅文档中的以下引用:
\n\n\n\n为了获得 Spring 驱动的方法验证的资格,所有目标类都需要使用 Spring\xe2\x80\x99s 注释
\n@Validated[...]
| 归档时间: |
|
| 查看次数: |
4128 次 |
| 最近记录: |