【发布时间】:2017-04-20 00:19:17
【问题描述】:
我正在尝试使用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 注释。问题是如何检索活动组以根据其值应用不同的验证?
【问题讨论】:
标签: spring hibernate hibernate-validator validationgroup