[英]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.