gpt4 book ai didi

java - 如何在数组/列表/集合的元素上使用 Java Bean validator (JSR-303/JSR-349)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:51 26 4
gpt4 key购买 nike

我刚开始使用 Java Bean 验证 (JSR-303/JSR-349/Hibernate Validator),并且了解一般概念。但是,我不确定如何验证组合类型的内容与类型本身。

例如:

@NotNull
private List<String> myString;

将验证 List myString 不为空,但不验证列表本身的内容。或者给定其他类型的 validator (最小/最大/等),我如何验证列表的各个元素?是否有任何组合类型的通用解决方案?

最佳答案

从 Bean Validation 1.0/1.1 开始,没有简单的通用解决方案。您可以实现自定义约束,例如 @NoNullElements:

@NoNullElements
private List<String> myStrings;

约束的 validator 将遍历列表并检查没有元素为空。另一种方法是将您的 String 包装成更特定于域的类型:

public class EmailAddress {

@NotNull
@Email
private String value;

//...
}

并通过@Valid 对列表应用级联验证:

@Valid
private List<EmailAddress> addresses;

拥有这种特定于域的数据类型通常有助于在数据元素通过应用程序传递时传达数据元素的含义。

在未来,该问题的通用解决方案可能是在 Java 8 支持的类型参数上使用注释,但这只是目前的一个想法:

private List<@NotNull String> myStrings;

关于java - 如何在数组/列表/集合的元素上使用 Java Bean validator (JSR-303/JSR-349),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com