如何对集合类型的元素应用验证

Boh*_*ian 0 java collections spring javax.validation

我正在使用 spring,因此javax.validation,这就是这个问题的背景。

假设我想验证列表的元素仅包含 4 位数字。

我想编码:

@Min(1000)
@Max(9999)
List<Integer> numbers;
Run Code Online (Sandbox Code Playgroud)

但是验证会爆炸,抱怨@Min并且@Max不能用于验证List. 好吧,有道理。

我可以@Valid在自定义对象列表上使用,例如:

@Valid // validate each element
List<My4DigitNumberClass> numbers;

@MyCustom4DigitValidation
class My4DigitNumberClass {
    Integer number;
}
Run Code Online (Sandbox Code Playgroud)

但我只想使用Integer(最终还有其他盒装原语、字符串等),例如:

@ValidateElements({ @Min(1000), @Max(9999) })
List<Integer> numbers;
Run Code Online (Sandbox Code Playgroud)

我可以在不创建任何自定义类或自定义验证注释的情况下执行此操作吗?

Boh*_*ian 5

使用以下语法注释type :

List<@Min(1000) @Max(9999) Integer> numbers;
Run Code Online (Sandbox Code Playgroud)