我很難相信我是唯一一個想要這樣做的人,但我找不到任何引用來幫助我完成我的障礙。使用Spring MVC和基於標註的驗證(我使用的框架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 {
}
如果我在柱狀圖或實例把名砰,這是大於10個字符,我得到我期待的驗證錯誤。不過,假設我仍然希望Bar和Bang來自抽象基類Foo,但我希望子類的名稱屬性具有不同的驗證。
如何詮釋酒吧和Bang使Bar.name有,比方說一個最大長度爲12個字符而Bang.name有8個字符的最大長度?
謝謝了, 羅布
[相似酮](http://stackoverflow.com/questions/9067420/can-i-override-a-jsr-303-validation-annotation) – gadget
我看到。我在基類上使用NO驗證對重寫的getter方法嘗試了「累積」的事情。會發生什麼是驗證不會發生。我嘗試過在各個地方胡鬧@Valid,我仍然無法讓驗證者在重寫的getter上開火。 是否必須在基類上設置'@Size'驗證程序,然後在擴展類上進一步限制它?像基類上的max = 1000,然後擴展上的max = 12,以利用註釋驗證的「累積」性質? – RobAllen
重點在於,由於這種累積性質,JSR303註釋不可能覆蓋。 – gadget