【问题标题】:Hibernate Validator validate setHibernate Validator 验证集
【发布时间】:2017-06-21 07:47:31
【问题描述】:

我有一个名为@Role 的自定义验证注释,我有一个验证User 的自定义验证器,它可以工作。问题是当我想在Set<User> 上使用这个验证器来验证这个集合中的每个元素时,像这样

public class Project {
  // Validates
  @Role
  private User creator;

  // Throws error
  @Role
  private Set<User> users;
}

这可悲地引发了这个错误:

 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'cz.studenthub.validators.annotations.Role' validating type 'java.util.Set<cz.studenthub.core.User>'

有没有什么方法可以验证集合而无需为Set&lt;User&gt; 编写新的验证器?

注意:我不想将@Valid 用于User,因为该实例不需要完全有效,它只需要满足我的RoleValidator 验证的一个条件。

【问题讨论】:

    标签: java validation bean-validation dropwizard hibernate-validator


    【解决方案1】:

    如果可以的话,我建议你使用 Hibernate Validator 6.0.0.Beta2。

    我们现在支持容器元素约束,因此您可以这样做:

    public class Project {
        // Validates
        @Role
        private User creator;
    
        private Set<@Role User> users;
    }
    

    我们计划在一周内发布候选版本 1,因此它已经相当稳定了。

    【讨论】:

    • 谢谢,我正在使用 Dropwizard 堆栈,因此无法更新到 Beta 版本,但知道在不久的将来可以更新对我来说就足够了。
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多