自 6.0.0.Beta1 发布以来才过去几周,但我们需要一个新的版本来匹配 Bean Validation 2.0.0.Beta2。
Hibernate Validator 6 将成为 Bean Validation 2.0 的参考实现,因此我们协调发布,以便您可以尽快测试最新添加的功能。
请注意,Hibernate Validator 6 需要 JDK 8 或更高版本。
自 Beta1 以来新功能
Bean Validation 2.0.0.Beta2 支持
本版本的主要目标是升级到 Bean Validation 2.0.0.Beta2。
我们修复了一些错误,并引入了一些新功能。
支持在值提取中非泛型类型
我们之前的值提取框架(这是我们的新容器元素验证实现的基础)仅支持泛型类型。
我们通过引入一个新的 type
属性到 ExtractedValue
注解来减轻这种限制,允许在提供信息的情况下定义提取值的类型。
因此,现在可以定义如下值提取器
@UnwrapByDefault
public class OptionalIntValueExtractor implements ValueExtractor<@ExtractedValue(type = Integer.class) OptionalInt> {
@Override
public void extractValues(OptionalInt originalValue, ValueReceiver receiver) {
receiver.value( null, originalValue.isPresent() ? originalValue.getAsInt() : null );
}
}
这正是 Hibernate Validator 所做的,以支持 OptionalInt
、OptionalLong
和 OptionalDouble
。
通过节点构建器 API 添加容器元素信息
节点构建器 API 允许您使用 ConstraintValidatorContext
定义约束违反的属性路径。
现在可以定义支持现有节点类型或定义容器元素节点的容器元素信息
public static class Validator implements ConstraintValidator<MyConstraint, MyBean> {
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate() )
.addContainerElementNode( "myNode1", Map.class, 1 )
.inIterable()
.atKey( "key" )
.addConstraintViolation();
context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate() )
.property( "myNode2" )
.inContainer( List.class, 0 )
.inIterable()
.atKey( "key" )
.addConstraintViolation();
return false;
}
}
还有一些其他事情
-
@SafeHtml
现在支持定义可接受的协议(例如,允许图像使用data
协议),并且具有改进的编程API。 -
@Min
/@Max
、@DecimalMin
/@DecimalMax
验证器已被拆分,每个类型有一个验证器,以避免在运行时使用反射。
已修复问题的完整列表可以在发布说明中找到。
获取6.0.0.Beta2
要使用Maven、Gradle等获取发布版,请使用GAV坐标org.hibernate.validator:{hibernate-validator|hibernate-validator-cdi|hibernate-validator-annotation-processor}:6.0.0.Beta2。请注意,组ID已从org.hibernate
(Hibernate Validator 5及之前版本)更改为org.hibernate.validator
(从Hibernate Validator 6开始)。
反馈、问题、想法?
要取得联系,请使用常规渠道
-
用户论坛(使用问题、一般反馈)
-
问题跟踪器(错误报告、功能请求)
-
邮件列表(与开发相关讨论)
-
Bean Validation开发邮件列表(有关Bean Validation规范的讨论)