现在我正在开发spring + hibernate应用程序
我想覆盖@Min
注释的验证器并编写以下代码:
@Component
public class CustomMinValidator extends MinValidatorForNumber {
public void initialize() {
Min min = new Min() {
@Override
public String message() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public Class<?>[] groups() {
return new Class<?>[0];
}
@Override
public Class<? extends Payload>[] payload() {
return null;
}
@Override
public long value() {
return 150;
}
@Override
public Class<? extends Annotation> annotationType() {
return null;
}
};
super.initialize(min);
}
}
但是在调试中我看到CustomMinValidator#initialize
从不调用但MinValidatorForNumber#initialize
调用。
如何正确叠加标准验证器?
答案 0 :(得分:1)
您必须通过约束映射文件“注册”自定义约束验证器 - http://beanvalidation.org/1.1/spec/#xml-mapping-constraintdefinition
在您的情况下,您还需要设置include-existing-validators="true"
,以便约束验证程序解析对于Numbers
是唯一的。