public class XMLServletRequestDataBinder
extends org.springframework.web.bind.ServletRequestDataBinder
以下の処理を順番に行う。
XMLデータの形式チェックにはXMLスキーマを使用する。
実際の形式チェック部分はSchemaValidatorに処理を委譲する。
詳細はSchemaValidatorを参照すること。
XMLデータをオブジェクトに変換する機能はCastorを使用する。 詳細はCastorOXMapperImplクラスを参照すること。
実際のXMLからオブジェクトへ変換する部分はOXMapperに処理を委譲する。
詳細はOXMapperを参照すること。
データバインド処理で発生するエラーは2種類あり、適切なエラーハンドリングを行う必要がある。
エラーの一覧を以下に記す
形式チェックエラーのハンドリング
形式チェックエラーで生成されるエラーメッセージを、BindExceptionに格納する。
エラーの詳細はjp.terasoluna.fw.oxm.xsd.xerces.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の詳細はjp.terasoluna.fw.oxm.exception.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,
jp.terasoluna.fw.oxm.exception.OXMappingException,
SchemaValidator,
OXMapper,
SimpleMappingExceptionResolver| コンストラクタと説明 |
|---|
XMLServletRequestDataBinder(Object target,
jp.terasoluna.fw.oxm.mapper.OXMapper oxmapper,
jp.terasoluna.fw.oxm.xsd.SchemaValidator schemaValidator,
String objectName)
XMLServletRequestDataBinderを生成する。
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
void |
bind(javax.servlet.ServletRequest request)
XML形式で定義されたリクエストデータをバインドする。
|
protected String[] |
createReplaceValues(String field,
String[] replaceValues)
置換文字列を生成する。
|
protected Document |
validate(InputStream in)
リクエストデータの形式チェックを行う。
|
bindMultipart, bindMultipartFiles, checkFieldDefaults, checkFieldMarkers, doBind, getEmptyValue, getFieldDefaultPrefix, getFieldMarkerPrefix, isBindEmptyMultipartFiles, setBindEmptyMultipartFiles, setFieldDefaultPrefix, setFieldMarkerPrefixaddValidators, applyPropertyValues, bind, checkAllowedFields, checkRequiredFields, close, convertIfNecessary, convertIfNecessary, convertIfNecessary, findCustomEditor, getAllowedFields, getAutoGrowCollectionLimit, getBindingErrorProcessor, getBindingResult, getConversionService, getDisallowedFields, getErrors, getInternalBindingResult, getObjectName, getPropertyAccessor, getPropertyEditorRegistry, getRequiredFields, getSimpleTypeConverter, getTarget, getTypeConverter, getValidator, getValidators, initBeanPropertyAccess, initDirectFieldAccess, isAllowed, isAutoGrowNestedPaths, isIgnoreInvalidFields, isIgnoreUnknownFields, registerCustomEditor, registerCustomEditor, replaceValidators, setAllowedFields, setAutoGrowCollectionLimit, setAutoGrowNestedPaths, setBindingErrorProcessor, setConversionService, setDisallowedFields, setExtractOldValueForEditor, setIgnoreInvalidFields, setIgnoreUnknownFields, setMessageCodesResolver, setRequiredFields, setValidator, validate, validatepublic XMLServletRequestDataBinder(Object target, jp.terasoluna.fw.oxm.mapper.OXMapper oxmapper, jp.terasoluna.fw.oxm.xsd.SchemaValidator schemaValidator, String objectName)
target - コマンドオブジェクトoxmapper - OXMapperschemaValidator - SchemaValidatorobjectName - オブジェクト名public void bind(javax.servlet.ServletRequest request)
実際のデータバインド部分は、OXMapperに処理を委譲する。
SchemaValidatorがDIされている場合、形式チェックを実行する。
bind クラス内 org.springframework.web.bind.ServletRequestDataBinderrequest - XML形式で定義されたリクエストデータprotected Document validate(InputStream in)
実際の形式チェック部分は、SchemaValidatorに処理を委譲する。
形式チェックエラーが発生した場合、 BindExceptionにエラーを格納する。
in - XMLデータCopyright © 2015. All Rights Reserved.