繁体   English   中英

如何在带有 Jackson 的 setter 方法中使用验证注释

[英]How to use validation annotation in setter method with Jackson

我知道我可以将注释放在年龄字段上。

但我想在 setAge 方法中验证年龄,这是我的代码:

class UserController {

    @PutMapping
    public ResponseEntity partialUpdate(@RequestBody @Validated UserDTO userDTO) {
        return userService.partialUpdate(userDTO);
    }
}
public class UserDTO {

    private String username;

    private Integer age;

    public void setAge(@Min(0) @Max(100) Integer age) {
        this.age = age;
    }
}

当我给年龄 = 101 时它是有效的,似乎验证不起作用。

似乎您需要使用验证器来检查您的 class 是否有效。

如果您正在创建 UserDTO 的UserDTO

UserDTO user = new UserDTO("My Name", 101);
 

然后执行以下操作

Validator validator = Validation.buildDefaultValidatorFactory.getValidator();
Set<ConstraintViolation<SomeEntity>> errors = validator.validate(user);

然后根据您的要求做必要的事情,比如通知客户什么是错误的字段,记录它们。 如果为空,则似乎一切都有效并继续进行。

if(CollectionUtils.isNotEmpty(errors)){
  throw new ConstraintViolationException(errors);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM