A =新しいA()を呼び出します。 validator.validate(a、All.class);
myStringはnullであり、notNullグループはすべてを拡張しますが、そうではありませんので、無効にする必要があります。私がバリデータのHibernate impl(4.0.2.GA)を使用していることに注意してください。
A =新しいA()を呼び出します。 validator.validate(a、All.class);
myStringはnullであり、notNullグループはすべてを拡張しますが、そうではありませんので、無効にする必要があります。私がバリデータのHibernate impl(4.0.2.GA)を使用していることに注意してください。
あなたの期待は、仕様が必要とするものから後ろ向きです。与えられたインターフェースZについては
、グループ(注釈要素群は、インタフェースZが含まれているIE)Zまたはのスーパーインタフェースのいずれかに属するものとしてマークされた制約:spec(PDF 27ページ)から、 Z(継承されたグループ)のグループZ.すなわち
の一部とみなされ、あなたがSection1.class
で検証し、All.class
と@NotNull
をタグ付けした場合、制約が適用されます。しかし、それ以外の方法ではありません。セットとしてその
思う:All
制約の共通集合であり、All
を拡張することによって、Section1
がAll
のスーパーセット、ないサブセットとなります。したがって、All
を使用して検証すると、All
およびそのスーパーインタフェースで指定されたものだけが適用されます。
あなたはAll
がSection1
で見つかった制約のスーパーセットになりたい場合は、あなたが相続を反転する必要があります。この意味で
interface All extends Section1 /*, Section2, Section3...*/ {}
、あなたはAll
がのすべてを継承することを自分自身に言うことができますSection1
の制約。
Javaは特定のインターフェースを拡張する人を見つけることを非常に困難にします(結局のところ、クラスファイルは参照されるまで利用できないかもしれませんが)。所定のインターフェースが伸びる。
+1その素晴らしい説明です。私が全体のコンセプトに持っている問題は、Defaultグループに自分のセクションを拡張させることができないということだけです。ですから、デフォルトグループにすべてを検証させたいときは、別のグループを使用するどこにでも追加する必要があります。少なくとも私はそう思った。デフォルトグループを再定義できることが分かりました。http://beanvalidation.org/1.0/spec/#constraintdeclarationvalidationprocess-groupsequence-redefiningdefaultgroup – Gandalf