【问题标题】:Use javax.validation outside controller springboot在控制器 springboot 外使用 javax.validation
【发布时间】:2021-01-17 22:58:00
【问题描述】:

我正在尝试使用 javax.validation 验证控制器外部的类并生成 MethodArgumentNotValidException 类型的异常。我查看了以下论坛,但到目前为止它们没有帮助:
Manually call Spring Annotation Validation Outside of Spring MVC
Using Spring Validator outside of the context of Spring MVC

我想要实现的是以下

public class ClassTest {
    @NotEmpty
    private String property1;

    @NotNull
    private String property2;
}

在我的验证类中执行以下操作(不是控制器),传播生成的异常(NotNull、NotEmpty、NotBlank、Pattern 等)

void validationClass(boolean value) {
    ClassTest classTest = new ClassTest();

    if (value) {
        //perform class validation
        errors = validation(classTest);
        throw new MethodArgumentNotValidException(errors);
    } else {
        //OK
    }
}

感谢您的帮助

【问题讨论】:

    标签: java spring-boot validation javax.validation


    【解决方案1】:

    如果我没听错的话,你想做一些自定义验证吗?

    public class CustomValidator {
    
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    
    void validate(Object object) {
        Set<ConstraintViolation<?>> violations = validator.validate(object);
        if (validations.size() > 0) {
        String errorMessage = 
        violations.stream().map(ConstraintViolation::getMessage).collect(Collectors.join(", ");
        throw new MethodArgumentNotValidException(errorMessage);
      }
     }
    }
    

    【讨论】:

    • 实际上,它是自定义的,但是,它不需要消息,而是生成的错误(NotNull,NotEmpty,NotBlank)
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多