jp.terasoluna.fw.web.rich.springmvc.bind
クラス XMLServletRequestDataBinder

java.lang.Object
  上位を拡張 org.springframework.validation.DataBinder
      上位を拡張 org.springframework.web.bind.WebDataBinder
          上位を拡張 org.springframework.web.bind.ServletRequestDataBinder
              上位を拡張 jp.terasoluna.fw.web.rich.springmvc.bind.XMLServletRequestDataBinder
すべての実装されたインタフェース:
org.springframework.beans.PropertyEditorRegistry, org.springframework.beans.TypeConverter

public class XMLServletRequestDataBinder
extends org.springframework.web.bind.ServletRequestDataBinder

XML形式のリクエストデータをコマンドオブジェクトにバインドするクラス。

以下の処理を順番に行う。

  1. XMLデータの形式チェック(※省略可能)
  2. XML→オブジェクトへの変換処理

XMLデータの形式チェックにはXMLスキーマを使用する。
実際の形式チェック部分はSchemaValidatorに処理を委譲する。
詳細はSchemaValidatorを参照すること。

XMLデータをオブジェクトに変換する機能はCastorを使用する。 詳細はCastorOXMapperImplクラスを参照すること。 実際のXMLからオブジェクトへ変換する部分はOXMapperに処理を委譲する。
詳細はOXMapperを参照すること。

データバインド処理で発生するエラーは2種類あり、適切なエラーハンドリングを行う必要がある。
エラーの一覧を以下に記す

  1. 形式チェックエラー
  2. OXMappingException

形式チェックエラーのハンドリング
形式チェックエラーで生成されるエラーメッセージを、BindExceptionに格納する。
エラーの詳細はXMLErrorReporterExを参照すること。

【形式チェックのリソースバンドル設定例】

           typeMismatch.number= {0}には{1}値を入力してください.
           typeMismatch.boolean= {0}にはboolean値を入力してください.
           typeMismatch.date= {0}には正しい日付を入力してください.
           typeMismatch.numberMinRange= {0}には{1}以上の{2}値を入力してください.
           typeMismatch.numberMaxRange= {0}には{1}以下の{2}値を入力してください.
 

OXMappingExceptionのハンドリング
データバインド処理で発生する例外はすべて実行時例外であり、 基本的にハンドリングする必要はない。
必要に応じて、例外ハンドラの定義にOXMappingException、 またはそのサブクラスをエントリすること。 OXMappingExceptionの詳細はOXMappingExceptionを参照すること。 例外ハンドリングの詳細はSimpleMappingExceptionResolverを参照すること。

【OXMappingExceptionのBean定義例】

          <bean id="handlerExceptionResolver"
                class="jp.terasoluna.fw.web.rich.springmvc.servlet.handler.SimpleMappingExceptionResolverEx">
              <property name="linkedExceptionMappings">
                  <map>
                     <entry key="jp.terasoluna.fw.oxm.exception.OXMappingException">
                          <value>oxmException,8004C028</value>
                      </entry>
                                      ・
                                      ・
                                      ・
                  </map>
              </property>
          </bean>
 

関連項目:
XMLServletRequestDataBinderCreator, ErrorMessage, ErrorMessages, OXMappingException, SchemaValidator, OXMapper, SimpleMappingExceptionResolver

フィールドの概要
 
クラス org.springframework.web.bind.WebDataBinder から継承されたフィールド
DEFAULT_FIELD_DEFAULT_PREFIX, DEFAULT_FIELD_MARKER_PREFIX
 
クラス org.springframework.validation.DataBinder から継承されたフィールド
DEFAULT_AUTO_GROW_COLLECTION_LIMIT, DEFAULT_OBJECT_NAME, logger
 
コンストラクタの概要
XMLServletRequestDataBinder(Object target, OXMapper oxmapper, SchemaValidator schemaValidator, String objectName)
          XMLServletRequestDataBinderを生成する。
 
メソッドの概要
 void bind(javax.servlet.ServletRequest request)
          XML形式で定義されたリクエストデータをバインドする。
protected  String[] createReplaceValues(String field, String[] replaceValues)
          置換文字列を生成する。
protected  Document validate(InputStream in)
          リクエストデータの形式チェックを行う。
 
クラス org.springframework.web.bind.ServletRequestDataBinder から継承されたメソッド
addBindValues, closeNoCatch
 
クラス org.springframework.web.bind.WebDataBinder から継承されたメソッド
bindMultipart, bindMultipartFiles, checkFieldDefaults, checkFieldMarkers, doBind, getEmptyValue, getFieldDefaultPrefix, getFieldMarkerPrefix, isBindEmptyMultipartFiles, setBindEmptyMultipartFiles, setFieldDefaultPrefix, setFieldMarkerPrefix
 
クラス org.springframework.validation.DataBinder から継承されたメソッド
applyPropertyValues, bind, checkAllowedFields, checkRequiredFields, close, convertIfNecessary, convertIfNecessary, findCustomEditor, getAllowedFields, getAutoGrowCollectionLimit, getBindingErrorProcessor, getBindingResult, getConversionService, getDisallowedFields, getErrors, getInternalBindingResult, getObjectName, getPropertyAccessor, getPropertyEditorRegistry, getRequiredFields, getSimpleTypeConverter, getTarget, getTypeConverter, getValidator, initBeanPropertyAccess, initDirectFieldAccess, isAllowed, isAutoGrowNestedPaths, isIgnoreInvalidFields, isIgnoreUnknownFields, registerCustomEditor, registerCustomEditor, setAllowedFields, setAutoGrowCollectionLimit, setAutoGrowNestedPaths, setBindingErrorProcessor, setConversionService, setDisallowedFields, setExtractOldValueForEditor, setIgnoreInvalidFields, setIgnoreUnknownFields, setMessageCodesResolver, setRequiredFields, setValidator, validate, validate
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

XMLServletRequestDataBinder

public XMLServletRequestDataBinder(Object target,
                                   OXMapper oxmapper,
                                   SchemaValidator schemaValidator,
                                   String objectName)
XMLServletRequestDataBinderを生成する。

パラメータ:
target - コマンドオブジェクト
oxmapper - OXMapper
schemaValidator - SchemaValidator
objectName - オブジェクト名
メソッドの詳細

bind

public void bind(javax.servlet.ServletRequest request)
XML形式で定義されたリクエストデータをバインドする。

実際のデータバインド部分は、OXMapperに処理を委譲する。

SchemaValidatorがDIされている場合、形式チェックを実行する。

オーバーライド:
クラス org.springframework.web.bind.ServletRequestDataBinder 内の bind
パラメータ:
request - XML形式で定義されたリクエストデータ

validate

protected Document validate(InputStream in)
リクエストデータの形式チェックを行う。

実際の形式チェック部分は、SchemaValidatorに処理を委譲する。

形式チェックエラーが発生した場合、 BindExceptionにエラーを格納する。

パラメータ:
in - XMLデータ
戻り値:
Document DOMツリー

createReplaceValues

protected String[] createReplaceValues(String field,
                                       String[] replaceValues)
置換文字列を生成する。

置換文字列の最初にフィールド情報を追加し、最後にエラー値を格納する。

パラメータ:
field - フィールド値
replaceValues - 置換文字列
戻り値:
配列の0番目にフィールド情報が付加された置換文字列


Copyright © 2012. All Rights Reserved.