java - 如何以编程方式配置 Bean 验证?

标签 java validation bean-validation

我想使用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!");
        }
        ...
}

用户DTO:

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...
}

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

最佳答案

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

关于java - 如何以编程方式配置 Bean 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44967217/

相关文章:

javascript - 带验证的垂直条形图

javascript - 是的日期验证+ 1天

javascript - 如何在数字输入中添加加号和减号并更新值

spring-mvc - 使用 Thymeleaf 的 "application-specific"在 Web UI 中显示 "fields.hasErrors"验证错误

java - 如何测试在 java 中实现 ConstraintValidator 的 validator ?

java - Android:如果我继续按后退按钮并再次启动应用程序,Mediaplayer 会播放多次

java - 从数据库挂载静态资源(图像)

java - Android写入系统设置对话框变灰

tomcat - 为 Tomcat 添加 javax.validation 功能

Java + Django 网络服务?