20

Webアプリのフォーム検証にHibernateバリデーターを使用しています。次のように、String属性に@Lengthアノテーションを使用しています。

@Length(min = 5, message = "The field must be at least 5 characters")
private String myString;

ただし、文字列が50文字を超える場合は、別のメッセージを表示する必要があります。すぐに使用できる@Lengthバリデーターを使用してこれを行う方法はありますか?私がやりたいことの例(コンパイラーは私を許可しません)は次のとおりです:

@Length(min = 5, message = "The field must be at least 5 characters")
@Length(max = 50, message = "The field must be less than 50 characters")
private String myString;

私は@Maxと@Minを試しましたが、彼らは私が望むことをしません。どんな入力でも大歓迎です!

4

3 に答える 3

54

@Length次のように、内部リスト アノテーション(Bean Validation/Hibernate Validator で各制約タイプに対して定義される)を使用して、1 つの要素で複数の制約を指定できます。

@List({
    @Length(min = 5, message = "The field must be at least 5 characters"),
    @Length(max = 50, message = "The field must be less than 50 characters")
})
private String myString;

ところで。移植性の理由から、Bean Validation API で定義されている@Sizeを優先することをお勧めします。@Length

于 2011-08-17T18:27:47.630 に答える
8

ドキュメントによると@Length(min=, max=)、1 つのメッセージで を使用できます。次に、メッセージを「フィールドは 5 ~ 50 文字にする必要があります」に変更します。

于 2011-08-16T20:42:50.117 に答える