2012-02-29 8 views
7

私は、sportID、sportName、playersの数のプロパティを持つPOJOというスポーツを持っています。注釈付き検証を使用して、sportNameがデータベースに既に存在するかどうかを確認するために、私自身の注釈制約を書きました。 sportNameを追加しようとすると効果的ですが、sportNameを変更せずにプレーヤーを更新しようとすると、検証にも失敗します。春の注釈の検証 - 更新時のユニークな点検vs追加

注釈付き検証でパラメータを渡す方法はありますか?たとえば、sportID contraint checkにsportIDを渡して、dbクエリでそのIDを除外することができます。

これを行うには良い方法がありますか?私のコントローラでは、Springが(@Validを使って)入力を検証し、エラーがなければビジネスルールをチェックするvalidate関数を呼び出さなければなりませんか?

答えて

3

より良い方法は、検証グループを使用することです。 (Spring MVC and JSR-303 Validation Groups

次に、「終了しない検証ツール」を除いて、デフォルトの検証グループを作成することができます。そして、「終了しないバリデーター」を持つ追加のグループを持ってください。これにより、必要なときにのみ、「終了しないバリデーター」を起動することができます。 (残念ながら、Spring 3.0で直接サポートされていないので、手作業で検証を開始する必要があります)

フィールドバリデータのようにバリデータを実装するのではなく、クラスバリデータと似ています。 - クロスフィールド検証のために説明されているさまざまなソリューションをご覧くださいin this Stack Overflow Question。 idフィールドにアクセスする方法を説明します。

+0

あなたが送ったリンクを使用して、それが機能しました。私は実際にそれを昨日読んだが、intを渡す方法を理解できませんでしたが、私はそれがフィールドの名前の文字列を探していることを実装していたと認識し、BeanUtils.getPropertyコードは実際に値を取得します。私は整数としてキャストすることができます。 – Felix

関連する問題