首页 > 解决方案 > 在应用自定义之前检查字段是否已经违反某些规则

问题描述

我有我的自定义验证注释,它是验证器。我不希望仅在字段不违反其他限制时才应用此自定义验证器。假设以下代码

class MyClass {

  @NotNull
  @Size(min = 10, max = 20)
  @MyCustomVlidatorAnnotation
  private String field;

}

我只想在field不为空且大小在 [10, 20] 范围内时应用自定义验证器,否则跳过我的自定义验证器

标签: javahibernate-validator

解决方案


这可以使用@javax.validation.GroupSequence.

@GroupSequence({ javax.validation.groups.Default.class, SecondPriorityCheck.class })
public interface ValidationSequence {

}

class MyClass {

  @NotNull                       // by default belongs to group Default
  @Size(min = 10, max = 20)      // same here
  @MyCustomVlidatorAnnotation(groups =  SecondPriorityCheck.class) 
  private String field;

}

那么你必须调用验证器ValidationSequence

javax.validation.Validator validator = ..
MyClass instance = ..
validator.validate(instance, ValidationSequence.class)

你可以在这里找到例子https://www.baeldung.com/javax-validation-groups


推荐阅读