Мне трудно верить, что я единственный, кто хочет это сделать, но я не могу найти никаких ссылок, чтобы помочь мне преодолеть препятствие. Использование Spring MVC и аннотацию на основе проверки (я использую Framework 4.0 и Java 1.7), рассмотрим простую иерархию классов, следующим образом:Spring MVC Проверка унаследованных классов
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 {
}
Если я ставлю имя в экземпляре либо баре или Bang, который превышает 10 символов, я получаю ошибку проверки, которую я ожидаю. Предположим, однако, что я все еще хочу, чтобы Bar и Bang были получены из абстрактного базового класса Foo, но я хочу, чтобы атрибут name дочерних классов имел разные оценки.
Как аннотировать бар и взрыва, так что Bar.name имеет максимальную длину, скажем, 12 символов, в то время как Bang.name имеет максимальную длину 8 символов?
Спасибо большое, Роб
[схожий] (http://stackoverflow.com/questions/9067420/can-i-override-a-jsr-303-validation-annotation) – gadget
я видел. Я попробовал «кумулятивную» вещь в переопределенном методе getter без проверки валидации в базовом классе. Случается, что проверки не происходит вообще. Я пробовал peppering @Valid в разных местах, и я до сих пор не могу заставить валидатор стрелять по переопределенному getter. Должен ли я устанавливать валидатор «@Size» в базовом классе, а затем ограничивать его дальше в расширенном классе? Как max = 1000 в базовом классе, а затем max = 12 на расширении, чтобы использовать «кумулятивный» характер проверки путем аннотации? – RobAllen
Дело в том, что из-за этого кумулятивный характер переопределения невозможен с аннотациями JSR303. – gadget