我正在为我的项目使用Hibernate Validator。我想使用自定义约束来引用约束验证器实现中的bean中的另一个字段。这怎么可能?
豆
@NotNull(when="mvel:this.two == null")
private String one;
@NotNull(when="mvel:this.one == null")
private String two;
验证
public class NotNullValidator implements ConstraintValidator<NotNull, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
//how do I get access to the parent bean here??
}
}
我正在使用Hibernate 5.0.0,Jersey 2.6,JBoss 5,Java 6。
答案 0 :(得分:0)
简短的回答是你不能。可用于字段验证的当前上下文信息不允许您访问整个bean实例。至少现在不行。有关于将根bean添加到上下文的讨论,但根据Bean Validation规范,根bean不可用。这背后的原因是 Validator 的某些方法没有bean实例($("#datepicker").datepicker('setDate', null);
)。然后,约束可能会通过或失败,具体取决于使用的验证方法。
如果要比较/引用多个字段,则需要自定义类级别约束。