2012-01-28 10 views
0

デフォルトではorg.hibernate.validator.constraints.Emailnot a well-formed email addressと表示されますが、ユーザーがfooと入力した場合はfoo is not a well-formed email addressと表示されます。だから、fooのプレースホルダーが必要です。私のドメインオブジェクトのプロパティには@Emailという注釈が付けられています。プレースホルダを@Emailで使用する方法hibernateバリデータ

私のリソースバンドルファイルにEmail = {0} is not a well-formed email addressがあります。ユーザーがfooを電子メールフィールドに入力すると、email is not a well-formed email addressが表示されます。

入力した値を生成し、エラーメッセージとして表示することはできますか?

私はSpring MVCの3

おかげで休止状態3.5を使用しています。

答えて

1

Bean検証プロバイダとしてHibernate Validatorを使用している場合は、リリース4.2で導入されたValueFormatterMessageInterpolatorを使用できます。これを行うには、Validatorを検索するときにそのインターポレータを設定するだけです。このように:{validatedValue} is not a well-formed email address:その補間を使用して

Configuration<?> configuration = Validation.byDefaultProvider().configure(); 

Validator validator = configuration 
    .messageInterpolator(new ValueFormatterMessageInterpolator(
     configuration.getDefaultMessageInterpolator())) 
    .buildValidatorFactory() 
    .getValidator(); 

エラーメッセージ内からプレースホルダ{validatedValue}によって検証値を参照することができます。

詳しくは、HV reference guideをご覧ください。

+0

@Gunner:私はHibernate 3.5を使用しています。 Hibernate 3.5でも同じことが達成できないでしょうか?私は自分の 'private String email;'で '@ Email'を使って、そのフィールドを検証しました。返信いただきありがとうございます。私はそれを調べるでしょう。 – skip

+1

あなたのケースで検証はどのように起動されますか? JPA 2で定義されているエンティティを永続化すると自動的に?その場合、デフォルトのバリデーター・ファクトリを使用して、 'META-INF/validation.xml'ファイルを使用して構成可能なバリデーターを取得します。設定方法の例は、Hibernate Validator [リファレンスガイド](http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-xmlconfiguration.html#d0e2053)を参照してください。 'ValueFormatterMessageInterpolator'のような特定のメッセージ補間器。 – Gunnar

+0

@Gunner:はい、検証はエンティティの存続中にトリガします。 – skip

関連する問題