在 List<String 上添加@NotNull或模式约束>

我们如何确保列表中的各个字符串不是空/空白或遵循特定模式

@NotNull
List<String> emailIds;

我还想添加一个模式

@Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b.")

但我没有它也能活下去。但我肯定希望有一个约束,它将检查列表中的任何字符串是否为空或空白。另外,Json 架构的外观如何

"ids": {
      "description": "The  ids associated with this.", 
    "type": "array",
        "minItems": 1,
        "items": {
        "type": "string",
         "required" :true }
 }

"required" :true does not seem to do the job

答案 1

Bean 验证 2.0(休眠验证器 6.0.1 及更高版本)支持通过注释参数化类型的类型参数来验证容器元素。例:

List<@Positive Integer> positiveNumbers;

甚至(虽然有点忙):

List<@NotNull @Pattern(regexp="\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\\b") String> emails;

引用:


答案 2

您可以为电子邮件字符串创建一个简单的包装类:

public class EmailAddress {

    @Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
    String email;

    //getters and setters
}

然后在现有对象中标记该字段:@Valid

@NotNull
@Valid
List<EmailAddress> emailIds;

然后,验证程序将验证列表中的每个对象。