java / beans validation – collection / map不包含空值

@NotNull注释validation某个对象不为null。

@NotEmpty注释,用于validation某个collection / map / string / …不为空。

是否还有一个注释,表明某个集合/映射不包含任何空值? 我无法找到它。 看起来很基本,我相信它必须符合JSR-303规范。

没有这样的内置约束。 您可以轻松编写自定义约束,例如@NoNullElements,它可以满足您的需求。 请参阅参考文档http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints以了解如何编写自定义约束。

根据Hibernate 5.2发布公告 ,Hibernate Validator 5.2提供了将validation注释添加到Iterable的generics类型的function,例如List<@MyValidationAnnotation String> myList; 。 但是,您当前无法使用现有的validation注释,因为它们的定义中没有“java.lang.annotation.ElementType.TYPE_USE”。 这听起来仍然是一个关于Bean Validation 1.2将如何或是否支持这一点的开放性问题。

因此,简而言之,如果您使用Java 8和Hibernate作为beanvalidation库,则可以在其定义中使用TYPE_USE编写自己的@NotNullvalidation注释,并将其应用于列表的generics类型。 否则,Hardy关于编写自己的自定义约束以validation列表的每个元素都是非null的答案可能是实现此目的的方法。

我有同样的问题。 我发现的唯一解决方案是在实体的setter中添加一个nullvalidation。 如果提交的值为null – > return。 我知道这很难看,但我知道如何避免exception的唯一方法。