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