首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在List<String>上添加@NotNull或Pattern约束

在List<String>上添加@NotNull或Pattern约束
EN

Stack Overflow用户
提问于 2014-03-07 02:59:28
回答 3查看 23.1K关注 0票数 14

如何确保列表中的各个字符串不为空或遵循特定模式

代码语言:javascript
复制
@NotNull
List<String> emailIds;

我还想添加一个模式

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

但我可以没有it.But,我当然希望有一个约束,它将检查列表中是否有字符串为空或空白。另外,Json模式看起来会是什么样子

代码语言:javascript
复制
"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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-07 03:11:42

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

代码语言:javascript
复制
public class EmailAddress {

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

    //getters and setters
}

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

代码语言:javascript
复制
@NotNull
@Valid
List<EmailAddress> emailIds;

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

票数 11
EN

Stack Overflow用户

发布于 2014-04-03 09:08:52

您不必使用任何包装器类来验证字符串列表。只需使用validator-collection中的@EachPattern约束

代码语言:javascript
复制
@NotNull
@EachPattern(regexp="\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
List<String> values;

仅此而已。很简单,对吧?有关详细信息,请参阅this,因此请回答。

票数 8
EN

Stack Overflow用户

发布于 2014-03-07 03:02:30

在我看来,对对象使用包装类,并对方法进行自己的验证:

代码语言:javascript
复制
public class ListWrapper<E> {

    private List<E> list = new ArrayList<>();
    private Pattern check = /*pattern*/;

    public boolean add(E obj) {
        if (this.verify(obj)) {
            return list.add(obj);
        }
        return false;
    }

    //etc

    public boolean verify(E obj) {
        //check pattern and for null
    }

或者,只使用列表的自定义对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22233512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档