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, setFieldMarkerPrefix
addValidators, 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, validate
public 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.ServletRequestDataBinder
request
- XML形式で定義されたリクエストデータprotected Document validate(InputStream in)
実際の形式チェック部分は、SchemaValidatorに処理を委譲する。
形式チェックエラーが発生した場合、 BindExceptionにエラーを格納する。
in
- XMLデータCopyright © 2015. All Rights Reserved.