2011-10-17 12 views
3

Hibernateの実装でJSR-303のバリデーションが統合されたSpringを使用してフォームを検証しようとしています。私は確認したい "確認メール"(emailConf)フィールドがemailフィールドに等しいことを確認します。Spring MVC 3検証アノテーション - メールの確認

public class ContactInfoForm { 

    @NotEmpty 
    private String name; 

    @NotEmpty 
    @Email 
    private String email; 

    @Expression(value = "emailConf= email", applyIf = "emailConf is not blank") 
    private String emailConf; 

    ... 
} 

しかし、このemailConf検証が動作しない(フィールドが一致しない場合、すなわちエラーが発生しない):私はこのようにそれをやって誰かのポストを見ました。類似の注釈を示したチュートリアルをいくつか見たことがありますが、これ以上の検索はできません。アノテーションを使って「電子メール/パスワードの確認」フィールドを検証する方法を知っている人はいますか?私は現在Validatorを実装し、validateメソッドの確認フィールドを検証する代わりの方法を使用しています。

+0

この '@ Expression'アノテーションはどこにありますか? – Ralph

+0

私はそれを認識しませんでしたが、@Expressionアノテーションは私が気づいていなかった "spring-modules"からのもので、私のクラスパスに残っています。バリデーションのチュートリアルに従っていたときにクラスパスに入れましたが、JSR-303とHibernate Validatorを使用してしまいました。 SpringSourceのフォーラムページには、2010年8月の「Spring Extensionsのために廃止されたSpringモジュールフォーラム」という発表があります。サポートされなくなった場合は、このライブラリを使用しないことをお勧めします。 –

答えて

1

あなたはこのquestion and its answersを見てください。このような検証を行う方法については、多くの方法があります(パスワードとパスワードの確認についてですが、問題は同じです)。

+1

FieldMatchバリデーターに基づく実装を使用しています。 – digitaljoel

+0

私はそのページを見て、そこには本当に良いリソースがいくつかあります。私が理解できない1つのことは、クラスレベルの制約の結果を自分のフォームの特定のフィールドに関連付ける方法です。電子メールが一致しない場合は、jspがemailConfフィールドのエラーとしてエラーを出力するようにします。私は現在、スプリングフォームを使用してエラーを出力しています:errorsタグ: '' –

+0

リソースをありがとう。カスタムのFieldMatchアノテーションはそれを行う良い方法のようです。私もscriptassertを自分のニーズに合わせて働かせることができましたが、私のコードはエラーを適切なフォームフィールドにバインドするのが面倒です。結局、私は注釈を捨て、カスタムバリデータークラスを使いました。もっと時間があれば、私はこれらの他の解決策を試してみました。ありがとう! –

1

同じクラスの2つのフィールドを比較する場合は、必要なのは"Class-level constraint"(JSR-303で説明)です。私はあなたの@Expressionがそのように動作するとは思わない。

関連する問題