備忘です。苦労したのと色々よくわからないので。
例えば以下のように一つの項目にいくつかのバリデーションが設定されていたとします。
このプログラムを起動させ、何も入力せずに、処理を行おうとするとバリデーションが働いて以下のような赤文字のエラーが表示されます。
この社員番号ですが、何も入力していない場合は、「社員番号を入力してください(@NoBlank)」だけ表示させたい(「数字を入力してください」と「10文字以内で入力してください」は表示させない)場合の記事です。
各フィールドのバリデーションにgroup属性をつける。
この場合Firstとつけている@NotBlankが最初に効くバリデーションになり、Secondとつけている@Pattern、@Sizeが次に効くバリデーションとなる。
この2つのインターフェースをまとめるのが、GroupOrderインターフェース内の@GroupSequenceである。
何か値を入力する。
こんな感じでバリデーションを任意の順番(タイミング)で処理させることができる。
疑問点
社員番号に値を入れて、氏名は空欄する。
するとなぜか社員番号に「数字を入力してください」と「10文字以内で入力してください」が表示されない。
氏名に値を入れる。
そうすると社員番号に「数字を入力してください」と「10文字以内で入力してください」が表示される。
これは仕様らしく、「社員番号」、「氏名」両方に設定されているFirstのバリデーションを満たさないとSecondバリデーションは効かないらしい。
※どなたか、この仕様を別のやり方で解消する方法があれば教えてください。。。