Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 超类的条件Bean验证_Java_Bean Validation - Fatal编程技术网

Java 超类的条件Bean验证

Java 超类的条件Bean验证,java,bean-validation,Java,Bean Validation,用例:添加/编辑地址或设置直接送达地址时,表单具有相同的字段。因此,最好将address form类用作传递表单的超类: 公共类地址表单{ @空空如也 私有字符串名称; // ... } 公共类DeliveryForm扩展了AddressForm{ 公共静态枚举ShippingType{ 直航, // ... } @NotNull 私人托运式托运式; // ... } 是否可以在类级别创建自定义约束(验证器)来设置是否应验证超类的条件 例如: @ValidateSuperclassIf(fie

用例:添加/编辑地址或设置直接送达地址时,表单具有相同的字段。因此,最好将address form类用作传递表单的超类:

公共类地址表单{
@空空如也
私有字符串名称;
// ...
}
公共类DeliveryForm扩展了AddressForm{
公共静态枚举ShippingType{
直航,
// ...
}
@NotNull
私人托运式托运式;
// ...
}
是否可以在类级别创建自定义约束(验证器)来设置是否应验证超类的条件

例如:

@ValidateSuperclassIf(field=“shippingType”,value=“DIRECT\u SHIPPING”)
公共类DeliveryForm扩展了AddressForm{
// ...
}
那么如何实现javax.validation.ConstraintValidator.isValid(对象值、ConstraintValidatorContext上下文)方法呢

是否可以在类中创建自定义约束(验证器) 级别设置是否应验证超级类的条件 还是不

不,你不能。Bean验证(规范)和参考实现Hibernate Validator中都没有这样做的方法


有一些讨论可以跳过超级类型约束(和),但这通常只是禁用它们,而不是添加条件(取消)活动

我是否正确地理解您,您希望基于相同的类对两个不同的表单使用不同的验证规则?在这种情况下,为什么不为不同的验证规则使用验证组?请参阅验证组no。相同的验证,但仅在满足条件时验证超类。然后我必须管理我的字段两次。谢谢你的信息和链接。