如何扩展内置的Hibernate Validator ConstraintValidator

时间:2015-05-31 21:04:41

标签: java hibernate validation bean-validation hibernate-validator

现在我正在开发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调用。

如何正确叠加标准验证器?

1 个答案:

答案 0 :(得分:1)

您必须通过约束映射文件“注册”自定义约束验证器 - http://beanvalidation.org/1.1/spec/#xml-mapping-constraintdefinition

在您的情况下,您还需要设置include-existing-validators="true",以便约束验证程序解析对于Numbers是唯一的。