我正在尝试使用Hibernate Validator
.
作为一个简单的例子,假设我要验证的对象的类有一个B bObj
字段,B
而另一个类有一个String name
字段。
出于这个原因,我已经实现了我自己的自定义Constraint Annotations
链接到自定义MyValidator implements ConstraintValidator
类。
DTO 类
@AclassValidate(groups = {Operations.Insert.class, Operations.Update.class javax.validation.groups.Default.class})
public class A {
@BclassValidate(groups = {Operations.Insert.class, Operations.Update.class})
private B bObj;
// setters, getters
}
我的端点方法签名(调用验证器并设置活动组):
@PostMapping("/test")
public A createA(
@Validated(value = Operations.Insert.class)
// @Validated(value = Operations.Update.class)
@RequestBody A a
)
我的验证器类
public class BclassValidator implements ConstraintValidator<BclassValidate, B> {
public void initialize(BclassValidate constraintAnnotation) {
}
public boolean isValid(B b, ConstraintValidatorContext constraintContext) {
boolean valid = true;
// Get active group here
activeGroup = ..?
if (activeGroup == Operations.Insert.class) {
// check if b.getName() equals to "John"
}
else if (activeGroup == Operations.Update.class) {
// check if b.getName() equals to "Doe"
}
return valid;
}
}
我想要实现的是基于活动组对同一字段应用不同的验证。活动组是在@Validated
注释处设置的组。问题是如何检索活动组以根据其值应用不同的验证?