来自单个验证器的集合验证

Collection validation from single validator

假设我有一个 class:

class Foo{
  @SomeCustomStringValidator
  String bar;
}

然后我想要

class Foo{

  List<String> bars;
}

有没有办法以某种方式使用 @SomeCustomStringValidator 应用于 bars 集合?

我会简单地包装 class:

class MyString {

    @SomeCustomStringValidator
    String bar;

    // mutators
}

然后构建MyString的列表:

class Foo {
    List<MyString> bars;
}

如果您使用的是Java8,您可以使用最新的Hibernate Validator 5.2 版本。有可能做到:

class Foo{
  @Valid
  List<@SomeCustomStringValidator String> bars;
}

否则,您可以使用中提到的class包装方法。

最后但同样重要的是,您可以编写自定义 ConstraintValidator<SomeCustomStringValidator, Collection> 并尝试在该验证器和您已有的 ConstraintValidator 之间共享核心验证逻辑。