itemの妥当性チェック(SpringValidator)でメッセージリソースを利用できる部品

SpringValidatorは、SpringModulesの妥当性チェックの部品を使用可能にしてくれるValidatorです。

SpringBatchのValiatorと、SpringのValiatorの橋渡しをしてくれます。

かなり便利なSpringValidatorですが、エラーをログに出力するときにメッセージリソースを利用できません。

このあたりの事情はSpring概要を見てみてください。

ここで紹介しますSpringValidatorWithResourceという部品は、メッセージリソースを利用できるようにします。

また、DynaBeanも使用することもできます。

以下のサンプルでは、メッセージリソースを使用する例を見てみたいと思います。

目標

まず、以下のサンプルの目標(ゴール)を示します。

妥当性チェックの結果、エラーが発生したときに、ログにメッセージリソースから取得したメッセージを出力することをゴールとします。

ここでは、Validatorの設定のみを記述します。

あとは通常通り、ValidatingItemProcessorに設定して利用していただければと思います。

使用サンプル

<バッチ処理設定ファイル(一部抜粋): batch-context.xml>

<!-- テスト用Validator -->

<bean id="valangValidator" class="jp.co.soracane.batch.item.SpringValidatorWithResource">

<property name="messageSource" ref="messageSource" />

<property name="validator" >

<!-- 妥当性チェックするクラス -->

<bean class="org.springmodules.validation.valang.ValangValidator">

<property name="valang">

<value>

<![CDATA[

{ name : size(?) <=5 : '6文字以上になってます。' : 'errors.maxlength': '名前',5 }

]]>

</value>

</property>

</bean>

</property>

</bean>

<!-- メッセージリソースの設定。 -->

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basenames" value="errorMessages"/>

</bean>

SpringValidatorWithResourceを設定します。

メッセージも設定します。設定はこれだけです。

<メッセージソースファイルのサンプル: errorMessages_ja.properties>

errors.maxlength={0}は{1}文字以下にしてください。

出力結果は以下のようになります。

「名前は5文字以下にしてください。」

最後に

ログ出力が変わるだけですので、ちょっとした機能ですがもしかしたら重宝するかもしれません。

よければ使用してみてください。

また、上記ではValang方式の妥当性チェックにしましたが、CommonsValidatorでも使用可能です。

Created Date: 2010/01/11