jp.terasoluna.fw.validation.springmodules
クラス BaseMultiFieldValidator
java.lang.Object
org.springmodules.validation.commons.AbstractBeanValidator
org.springmodules.validation.commons.DefaultBeanValidator
jp.terasoluna.fw.validation.springmodules.BaseMultiFieldValidator
- すべての実装されたインタフェース:
- org.springframework.validation.Validator
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");
}
}
Errorsインタフェースの代表的なエラー追加メソッド
メソッド名 |
説明 |
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情報を指定しない相関チェック等に使用する。 |
Bean定義ファイルの記述例(入力チェッククラス)
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定義ファイルの記述例(コントローラ)
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
メソッドの概要 |
void |
validate(java.lang.Object obj,
org.springframework.validation.Errors errors)
入力チェックメソッド。 |
protected abstract void |
validateMultiField(java.lang.Object obj,
org.springframework.validation.Errors errors)
相関チェックを行なうメソッド。 |
クラス org.springmodules.validation.commons.DefaultBeanValidator から継承されたメソッド |
getFormName, setUseFullyQualifiedClassName |
クラス org.springmodules.validation.commons.AbstractBeanValidator から継承されたメソッド |
cleanupValidator, getLocale, initValidator, setValidatorFactory, supports |
クラス java.lang.Object から継承されたメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BaseMultiFieldValidator
public BaseMultiFieldValidator()
validate
public void validate(java.lang.Object obj,
org.springframework.validation.Errors errors)
- 入力チェックメソッド。
設定ファイルによる単項目チェックを呼び出し、
エラーがなければ
validateMultiField(Object, Errors)
メソッドを呼び出す。
- 定義:
- インタフェース
org.springframework.validation.Validator
内の validate
- オーバーライド:
- クラス
org.springmodules.validation.commons.AbstractBeanValidator
内の validate
- パラメータ:
obj
- 検査対象のJavaBeanerrors
- エラー
validateMultiField
protected abstract void validateMultiField(java.lang.Object obj,
org.springframework.validation.Errors errors)
- 相関チェックを行なうメソッド。
単項目チェックでエラーが発生しない場合、呼び出される。
サブクラスはこのメソッドを実装する
- パラメータ:
obj
- 検査対象のJavaBeanerrors
- エラー