繁体   English   中英

如何以编程方式配置bean验证?

[英]How to configure bean validation programatically?

我要使用bean验证的代码:

@Inject
private ValidatorFactory validatorFactory;
....

public Response create(@Context HttpServletRequest request) {
        ...
        Set<ConstraintViolation<UserDTO>> validate = validatorFactory.getValidator().validate(userDTO);
        validate.forEach(error-> System.err.println(error.getMessage()));
        if(validate.size() > 0){
            throw new ValidationException("userDTO is not valid!");
        }
        ...
}


public Response update(@Context HttpServletRequest request) {
        Set<ConstraintViolation<UserDTO>> validate = validatorFactory.getValidator().validate(userDTO);
        validate.forEach(error-> System.err.println(error.getMessage()));
        if(validate.size() > 0){
            throw new ValidationException("userDTO is not valid!");
        }
        ...
}

UserDTO:

public class UserDTO {
    private Integer id;
    private String userName;
    @NotNull(message = "is missing")
    private String locked;
    @Email(message = "email is not valid")
    private String email;
    @NotNull(message = "countryCode is missing")
    private String countryCode;
    ...getters-setters more variables...
}

所以我有一个Http方法,我想在其中创建一个用户...如果缺少国家/地区代码或锁定好或者如果电子邮件无效,则Bean验证有效。但是当我只想更新例如电子邮件时,验证也是在整个dto类上运行...所以问题是我可以如何配置每次都不在每个变量上运行?

您应该使用Validator::validateProperty检查特定属性。 您还可以将它们分组并通过Validator::validate (请参阅此处的教程)进行检查(如果有多个属性)。

暂无
暂无

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

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