【问题标题】:Java validation of object with annotation directly直接使用注释对对象进行 Java 验证
【发布时间】:2018-11-16 17:32:18
【问题描述】:

Java 验证的常规方式是定义一个具有属性的类,并使用一个或多个验证约束注解进行注解,例如@NotNull@Future

是否可以在不指定类的情况下直接使用验证器约束注释来验证对象。例如:

String a = "";
validator.validate(a, javax.validation.constraints.NotNull.class);

【问题讨论】:

    标签: java hibernate-validator


    【解决方案1】:

    这显然不是 Hibernate Validator 设计的用例。

    您需要做的是根据约束和对象类型创建一个ConstraintValidator,然后使用isValid() 方法。入口点是ConstraintValidatorManager

    它是一个内部类,因此它可能会在没有警告的情况下进行更改,即使在微型版本中也是如此,因此我不建议使用它。

    【讨论】:

    • 我正在开发一个简单的 EAV 模块,它需要在运行时验证每个属性而不定义 java 类。是否有任何休眠验证器内部类可以为此目的调用?
    • 我能够通过 java 反射创建注解类实例,并且能够在运行时设置所有注解属性。
    • 我编辑了我的答案以提供更多信息。但实际上,这不是你应该做的事情。请注意,您可以使用 Validator#validateProperty() 甚至 Validator#validateValue() 验证 bean 的给定属性
    猜你喜欢
    • 2016-06-18
    • 2017-10-30
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多