public abstract class BaseMultiFieldValidator
extends org.springmodules.validation.commons.DefaultBeanValidator
Spring-Modules Validatorによる単項目チェック以外に相関にチェックを
行ないたい場合に使用する。
ただし、DBアクセスが必要なチェックは各業務クラスにてチェックすること。
サブクラスはvalidateMultiField(Object, Errors)
メソッドを
オーバーライドし、チェックロジックを記述する。
サブクラスはvalidateMultiField(Object, Errors)
メソッドを
オーバーライドする。
引数のobjは検査対象のJavaBeanであるため、各JavaBeanの型にキャストしてから
属性を取り出す。
エラーを追加する場合、引数errorsのrejectメソッド、rejectValueメソッドを
実行する。
protected void validateMultiField(Object obj, Errors errors) { // JavaBeanの取得 SampleBean bean = (SampleBean) obj; // 1つ目の属性 String field1 = bean.getField1(); // 2つ目の属性 String field2 = bean.getField2(); // 1つ目の属性と2つ目の属性が同じではない場合、エラーを追加する if (!field1.equals(field2) { // エラーを追加する errors.reject("errors.sample"); } }
void rejectValue(String field, String errorCode) | エラーを追加する。fieldにはJavaBeanのプロパティ名、 errorCodeにはリソースバンドルのキーを指定する。 置換文字列がないエラーに使用する。 |
void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) | エラーを追加する。field、errorCodeは上記と同様。errorArgsは置換文字列、 defaultMessageはデフォルトメッセージを指定する。(Terasolunaでは デフォルトメッセージは使用しないため、任意の文字列を設定する) |
void reject(String errorCode) | エラーを追加する。リソースバンドルのキーのみ指定する。 field情報を指定しない相関チェック等に使用する。 |
void reject(String errorCode, Object[] errorArgs, String defaultMessage) | エラーを追加する。errorArgsは置換文字列、defaultMessageは デフォルトメッセージを指定する。(Terasolunaでは デフォルトメッセージは使用しないため、任意の文字列を設定する) field情報を指定しない相関チェック等に使用する。 |
Spring上でこの入力チェック機能を使用する場合、 入力チェックファクトリ(入力チェッククラスの初期化を行なうクラス)と 入力チェッククラスをBean定義ファイルに設定する必要がある。
<!-- 入力チェッククラスのファクトリ --> <bean id="validatorFactory" class="org.springmodules.commons.validator.DefaultValidatorFactory"> <property name="validationConfigLocations"> <list> <!-- ここに記述したバリデーション定義ファイル(validation.xml)や バリデーションルール定義ファイル(validation-rules.xml)を Springフレームワークが設定ファイルとして認識する --> <value>/WEB-INF/validation/validator-rules.xml</value> <value>/WEB-INF/validation/validator-rules-ex.xml</value> <value>/WEB-INF/validation/validation.xml</value> </list> </property> </bean> <!-- 相関チェックを行なう入力チェッククラス class属性に作成した相関チェッククラスを記述する--> <bean id="sampleValidator" class="jp.terasoluna.sample2.validation.SampleMultiFieldValidator"> <property name="validatorFactory"><ref local="validatorFactory"/></property> </bean>
Bean定義ファイルで設定した入力チェック機能を使用するために、 コントローラのvalidator属性に上記で設定した入力チェック機能を 設定する必要がある。
<!-- サンプル入力チェック業務 --> <bean name="/secure/blogic/validateSample.do" class="jp.terasoluna.sample2.web.controller.ValidateSampleController" parent="xmlRequestController"> <property name="sumService" ref="sumService"/> <property name="validator" ref=“sampleValidator"/> <property name="commandClass"> <value>jp.terasoluna.sample2.dto.SampleDto</value> </property> </bean>
DefaultBeanValidator
,
BindException
,
Errors
コンストラクタと説明 |
---|
BaseMultiFieldValidator() |
修飾子とタイプ | メソッドと説明 |
---|---|
void |
validate(Object obj,
org.springframework.validation.Errors errors)
入力チェックメソッド。
|
protected abstract void |
validateMultiField(Object obj,
org.springframework.validation.Errors errors)
相関チェックを行なうメソッド。
|
getFormName, setUseFullyQualifiedClassName
public void validate(Object obj, org.springframework.validation.Errors errors)
validateMultiField(Object, Errors)
メソッドを呼び出す。validate
インタフェース内 org.springframework.validation.Validator
validate
クラス内 org.springmodules.validation.commons.AbstractBeanValidator
obj
- 検査対象のJavaBeanerrors
- エラーprotected abstract void validateMultiField(Object obj, org.springframework.validation.Errors errors)
obj
- 検査対象のJavaBeanerrors
- エラーCopyright © 2014 NTT DATA Corporation.