2012-05-10 11 views
0

Spring-3.1.0.GAを使用してサービス(Webアプリケーションではない)を開発しています。私はSpringと一緒にhibernate-validatorを使ってサービス入力を検証したいと思っています。サービス層のSpringを使用するグループによるBean検証

私は豆の検証サポートを有効にしている:私は@Validatedとメソッドのパラメータ@NotNullと、@size、@Validなどで自分のサービス・インターフェースを注釈を付けて、それが正常に動作している

<bean id="validator" 
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> 

<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/> 

しかし、妥当性検査グループに基づいて、Customerというパラメータを検証する必要があります。 メソッドのパラメータに@Validatedまたは@Validated(Group1.class)を付けると、Springは検証を実行していません。

@Validを使用して注釈を付けると、検証はデフォルトの検証グループ(期待どおり)で実行されています。

さまざまなメソッドがさまざまなグループで動作するため、インターフェイスレベルで@Validate(Group1.class)に注釈を付けることはできません。

Springとhibernate-validatorをグループサポートで使用してサービスレイヤの検証を実行するにはどうすればよいですか?

+0

アノテーションを有効にする必要がありますか?例えば。 ''を 'applicationContext.xml'に追加する行があります(ただし、これはSpring MVCアプリケーション用ですが、そうは思われません)。 – vegemite4me

答えて

0

Spring 3.1.0以降では、@Validアノテーションで直接グループを使用できます。例えば:私は春のソースコードを行っていると、なぜメソッドのparamsの検証グループが...コードごとに、それはインターフェイスレベルでのみ@Validatedから検証グループの設定を選んでいるとして選ばれていない

@Valid(groups={Default.class, Group1.class}) 
+0

@ValidはBean検証APIからのものであり、グループをサポートしていません。 –

0

、メソッドレベルではありません。

しかし、私はSpringMVCコンテキストでどのように動作しているのか、まだ確認していません。

また、このプロセスで私は知っていました。子アプリケーションコンテキストでMethodValidationPostProcessorを設定した場合、それはSpringによって取得されません。 SpringMVCを使用している場合、MethodValidationPostProcessorは[servlet-name] -servlet.xmlで設定した場合にのみ登録されます。 ContextLoaderListenerによって選択された任意の子コンテキスト設定ファイルで設定すると、SpringはMethodValidationPostProcessorを登録しません。また、私はそれがMethodValidationPostProcessorまたは任意のBeanPostProcessorsのためだけであるかどうかはわかりません。

関連する問題