Java约束验证器 - 如何从我的自定义验证器调用默认约束验证器?

时间:2014-06-02 20:24:24

标签: java hibernate validation bean-validation

我有一个模型对象,如下面的自定义约束验证器。自定义验证程序检查是否填充了fileName或hours。

@ValidCriteria
class Criteria{
    @NotEmpty String id;    
    @NotEmpty String name;
    String fileName;
    String hours;   
}

有一种方法可以将此作为输入,并验证以下所有条件

  1. 条件不为null(默认验证程序)
  2. criteria.id不为空(默认验证程序)
  3. criteria.name不为空(默认验证程序)
  4. 条件fileName或小时不为空(通过自定义验证程序)

    无效评估(@NotNull @Valid Criteria criteria){}

  5. 现在我正在为这个模型类编写单元测试。我正在调用

    Validation.buildDefaultValidatorFactory().getValidator().validate(criteria)
    

    当我这样做时,默认验证器的前三个验证没有被调用。有没有办法从我的单元测试或自定义验证器调用默认验证器?

1 个答案:

答案 0 :(得分:0)

我找到了答案。实际上,下面的行是调用我的自定义约束@ValidCriteria中定义的自定义验证器,后者又委托给默认验证器。由于我的验证器中存在错误,因此无法提前工作。

Validation.buildDefaultValidatorFactory().getValidator().validate(criteria)