Spring MVC验证继承类

Rob*_*len 7 java validation spring spring-mvc hibernate-validator

我很难相信我是唯一一个想要这样做的人,但我找不到任何能帮助我克服障碍的人.使用Spring MVC和基于注释的验证(我使用的是框架4.0和Java 1.7),考虑一个简单的类层次结构,如下所示:

abstract class Foo {

    @Size(max=10, message = "The name has to be 10 characters or less.")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Bar extends Foo {

}

class Bang extends Foo {

}
Run Code Online (Sandbox Code Playgroud)

如果我把名字在柱状图或爆炸的实例,这是超过10个字符,我得到我期待验证错误.但是,假设我仍然希望Bar和Bang从抽象基类Foo派生,但我希望子类的name属性具有不同的验证.

如何对Bar和Bang进行注释,以便Bar.name的最大长度为12个字符,而Bang.name的最大长度为8个字符?

非常感谢,Rob

Har*_*rdy 4

简而言之,在 Bean Validation 中不可能禁用超类中的约束。这里有一个功能请求https://hibernate.atlassian.net/browse/BVAL-256建议引入 @OverrideConstraint 或 @IgnoreInheritedConstraint 类型的注释。但到目前为止,还不可能做到这一点。

另请参阅http://lists.jboss.org/pipermail/beanvalidation-dev/2012-January/000128.htmlhttps://hibernate.atlassian.net/browse/HV-548