私は複数の(カスタム)内部制約と1つのクラスレベル制約を持つBeanクラスを持っています。私はクラスレベルの制約の前に内部の制約を検証したいと思います。コードは次のようになります。Java Beanの検証:クラスレベルの制約を持つGroupSequence
@GroupSequence({ Inner.class, NewSlotBean.class })
@TotalBeanValid(groups = NewSlotBean.class)
public class NewSlotBean {
@DayMonthYearString(groups = Inner.class)
private String slotDay;
@TimeString(groups = Inner.class)
private String slotBegin;
@LengthString(groups = Inner.class)
private String slotLength;
}
(Inner
が周りのどこかに横たわっているだけの空のインターフェースです)。
しかし、これを実行しようとすると、クラスレベルの制約はまったく検証されません。私は(Outer
がランダムなインターフェイスである)
@GroupSequence({ Inner.class, Outer.class })
ようGroupSequenceを定義しようとすると、私は例外を取得:
javax.validation.GroupDefinitionException: ...*.beans.NewSlotBean must be part of the redefined default group sequence.
は、S/Oわからクラスレベルのことを確認する方法を知っています制約は内側のものの後で検証されますか? (!。これは、私はそれがしばらく後にポップアップして、ランダムな問題を持っていたデフォルトではないと思わ)
ただ、改善の提案:それはおそらく検証グループの方が良いです他の方法で回避: '@GroupSequence({NewSlotBean.class、ClassLevel.class})@TotalBeanValid(グループ= ClassLevel.class) 'を' NewSlotBean'クラスに追加し、InnerGroup'検証グループとフィールドレベルグループの割り当てを削除します。フィールドバリデーションは自動的にデフォルトの検証グループに割り当てられます。コードが少なく、クリーナー。 – jannis