クラス ModelAttributeMethodProcessor
java.lang.ObjectSE
org.springframework.web.method.annotation.ModelAttributeMethodProcessor
- 実装されたすべてのインターフェース:
HandlerMethodArgumentResolver
,HandlerMethodReturnValueHandler
- 既知の直属サブクラス
ServletModelAttributeMethodProcessor
public class ModelAttributeMethodProcessor
extends ObjectSE
implements HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler
@ModelAttribute
アノテーション付きメソッド引数を解決し、@ModelAttribute
アノテーション付きメソッドからの戻り値を処理します。 モデル属性は、モデルから取得されるか、デフォルトのコンストラクターで作成されます(そしてモデルに追加されます)。作成された属性は、サーブレットリクエストパラメーターへのデータバインディングを介して入力されます。引数に @jakarta.validation.Valid
のアノテーションが付けられている場合、検証を適用できます。または Spring 自身の @org.springframework.validation.annotation.Validated
。
このハンドラーが annotationNotRequired=true
で作成された場合、非単純型の引数と戻り値は、@ModelAttribute
の有無にかかわらずモデル属性と見なされます。
- 導入:
- 3.1
- 作成者:
- Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze, Vladislav Kisel
フィールドサマリー
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected void
bindRequestParameters
(WebDataBinder binder, NativeWebRequest request) setter/fields を介してリクエストをターゲットオブジェクトにバインドする拡張ポイント。protected void
constructAttribute
(WebDataBinder binder, NativeWebRequest request) 属性を作成し、リクエストをコンストラクター引数にバインドする拡張ポイント。protected ObjectSE
createAttribute
(StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest request) モデルで検出されない場合にモデル属性を作成するための拡張ポイント。Bean プロパティを介した後続のパラメーターバインド(抑制されていない限り)。void
handleReturnValue
(ObjectSE returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) NULL 以外の戻り値をModelAndViewContainer
に追加します。protected boolean
isBindExceptionRequired
(MethodParameter parameter) 検証エラーで致命的なバインド例外を発生させるかどうか。protected boolean
isBindExceptionRequired
(WebDataBinder binder, MethodParameter parameter) 検証エラーで致命的なバインド例外を発生させるかどうか。final ObjectSE
resolveArgument
(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) モデルから引数を解決するか、見つからない場合は、デフォルトが使用可能な場合はそれをインスタンス化します。boolean
supportsParameter
(MethodParameter parameter) パラメーターにModelAttribute
のアノテーションが付いている場合、またはデフォルトの解決モードの場合、単純型ではないメソッドパラメーターの場合、true
を返します。boolean
supportsReturnType
(MethodParameter returnType) メソッドレベルの@ModelAttribute
が存在する場合はtrue
を返します。デフォルトの解決モードでは、単純型ではない戻り値の型に対してはtrue
を返します。protected void
validateIfApplicable
(WebDataBinder binder, MethodParameter parameter) 該当する場合、モデル属性を検証します。
フィールドの詳細
logger
コンストラクターの詳細
ModelAttributeMethodProcessor
public ModelAttributeMethodProcessor(boolean annotationNotRequired) クラスコンストラクター。- パラメーター:
annotationNotRequired
- "true" の場合、非単純メソッドの引数と戻り値は、@ModelAttribute
アノテーションの有無にかかわらずモデル属性と見なされます
メソッドの詳細
supportsParameter
パラメーターにModelAttribute
のアノテーションが付いている場合、またはデフォルトの解決モードの場合、単純型ではないメソッドパラメーターの場合、true
を返します。- 次で指定:
- インターフェース
HandlerMethodArgumentResolver
のsupportsParameter
- パラメーター:
parameter
- チェックするメソッドパラメーター- 戻り値:
- このリゾルバーが提供されたパラメーターをサポートする場合、
true
。それ以外の場合はfalse
resolveArgument
@Nullable public final ObjectSE resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws ExceptionSE モデルから引数を解決するか、見つからない場合は、デフォルトが使用可能な場合はそれをインスタンス化します。次に、データバインディングを介してモデル属性にリクエスト値が入力され、@java.validation.Valid
が引数に存在する場合はオプションで検証されます。- 次で指定:
- インターフェース
HandlerMethodArgumentResolver
のresolveArgument
- パラメーター:
parameter
- 解決するメソッドパラメーター。このパラメーターは、true
を返さなければならないHandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
に事前に渡されている必要があります。mavContainer
- 現在のリクエストの ModelAndViewContainerwebRequest
- 現在のリクエストbinderFactory
-WebDataBinder
インスタンスを作成するためのファクトリ- 戻り値:
- 解決された引数値、または解決できない場合は
null
- 例外:
BindException
- データバインディングと検証がエラーになり、次のメソッドパラメーターがErrors
型ではない場合ExceptionSE
- WebDataBinder 初期化が失敗した場合
createAttribute
@Nullable protected ObjectSE createAttribute(StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest request) throws ExceptionSE モデルで検出されない場合にモデル属性を作成するための拡張ポイント。Bean プロパティを介した後続のパラメーターバインド(抑制されていない限り)。デフォルトでは、6.1 では、このメソッドは
null
を返します。この場合、代わりにDataBinder.construct(org.springframework.validation.DataBinder.ValueResolver)
がモデル属性の作成に使用されます。このメソッドの主な目的は、他の代替メソッドでモデル属性を作成できるようにすることです。- パラメーター:
attributeName
- 属性の名前 (非null
)parameter
- メソッドのパラメーター宣言binderFactory
- WebDataBinder インスタンスを作成するためrequest
- 現在のリクエスト- 戻り値:
- 作成されたモデル属性、または
null
- 例外:
ExceptionSE
constructAttribute
属性を作成し、リクエストをコンストラクター引数にバインドする拡張ポイント。- パラメーター:
binder
- バインディングに使用するデータバインダーインスタンスrequest
- 現在のリクエスト- 導入:
- 6.1
bindRequestParameters
setter/fields を介してリクエストをターゲットオブジェクトにバインドする拡張ポイント。- パラメーター:
binder
- バインディングに使用するデータバインダーインスタンスrequest
- 現在のリクエスト
validateIfApplicable
該当する場合、モデル属性を検証します。デフォルトの実装では、
@jakarta.validation.Valid
、Spring のValidated
、名前が "Valid" で始まるカスタムアノテーションをチェックします。- パラメーター:
binder
- 使用する DataBinderparameter
- メソッドのパラメーター宣言- 関連事項:
isBindExceptionRequired
検証エラーで致命的なバインド例外を発生させるかどうか。デフォルトの実装は
isBindExceptionRequired(MethodParameter)
に委譲します。- パラメーター:
binder
- データバインディングの実行に使用されるデータバインダーparameter
- メソッドのパラメーター宣言- 戻り値:
- 次のメソッドパラメーターが型
Errors
でない場合、true
- 関連事項:
isBindExceptionRequired
検証エラーで致命的なバインド例外を発生させるかどうか。- パラメーター:
parameter
- メソッドのパラメーター宣言- 戻り値:
- 次のメソッドパラメーターが型
Errors
でない場合、true
- 導入:
- 5.0
supportsReturnType
メソッドレベルの@ModelAttribute
が存在する場合はtrue
を返します。デフォルトの解決モードでは、単純型ではない戻り値の型に対してはtrue
を返します。- 次で指定:
- インターフェース
HandlerMethodReturnValueHandler
のsupportsReturnType
- パラメーター:
returnType
- チェックするメソッドの戻り値の型- 戻り値:
- このハンドラーが提供された戻り値の型をサポートする場合、
true
。それ以外の場合はfalse
handleReturnValue
public void handleReturnValue(@Nullable ObjectSE returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws ExceptionSE NULL 以外の戻り値をModelAndViewContainer
に追加します。- 次で指定:
- インターフェース
HandlerMethodReturnValueHandler
のhandleReturnValue
- パラメーター:
returnValue
- ハンドラーメソッドから返された値returnType
- 戻り値の型。この型は、true
を返さなければならないHandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
に事前に渡されている必要があります。mavContainer
- 現在のリクエストの ModelAndViewContainerwebRequest
- 現在のリクエスト- 例外:
ExceptionSE
- 戻り値の処理がエラーになる場合