2016-04-03 8 views
0

私はjava spring mvcアプリケーションを開発中です。モデルがあり、フィールドの上に2つの検証注釈を設定しました。ここでのコードサンプルは次のとおりです。私は空のnameを残してフォームを送信するとjava - springのバリデーション - 最初のバリデーションが失敗したときにフィールドの他のバリデーションを無効にする

public class MyModel{ 

    @NotBlank(message = "This field can not be blank") 
    @NationalCode(message = "Invalid national code") 
    private String name; 

    .... 

} 

、エラー検証配列は、二つの部材があります

name => This field can not be blank 
name => Invalid national code 

をしかし、私は2番目の行を望んでいません。実際には、にフィールドの最初の検証が失敗したときに、そのフィールドの他のすべての検証が実行を停止します。どうすればいいですか?

答えて

0

あなたがここで紛失しているのは、Bean Validation specificationによって提供されるグループ機能です。特定のグループに属する注釈によって生成されたエラーメッセージのみが表示されるように、論理グループを定義する必要があります。詳細については、section 4.4.2. Group sequenceを参照してください。一言で言えば

、例えば、あなた自身のマーカーインターフェイスを定義しNotBlankGroupとするときnameフィールドだけ@NotBlankにメッセージが表示されますように、あなたの@NotBlank注釈、

@NotBlank(message = "This field can not be blank", groups = NotBlankGroup.class) 

にこのインタフェースクラスを追加値は空です。

以降あなたは彼らのすべてが一つのグループとして評価されるように、あなたは簡単にgroupsと他の注釈にNotBlankGroupを追加することができ@NationalCodeまたはその他のカスタムまたは事前に定義された注釈を追加したい場合。

関連する問題