クラス 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 voidbindRequestParameters(WebDataBinder binder, NativeWebRequest request) setter/fields を介してリクエストをターゲットオブジェクトにバインドする拡張ポイント。protected voidconstructAttribute(WebDataBinder binder, NativeWebRequest request) 属性を作成し、リクエストをコンストラクター引数にバインドする拡張ポイント。protected ObjectSEcreateAttribute(StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest request) モデルで検出されない場合にモデル属性を作成するための拡張ポイント。Bean プロパティを介した後続のパラメーターバインド(抑制されていない限り)。voidhandleReturnValue(ObjectSE returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) NULL 以外の戻り値をModelAndViewContainerに追加します。protected booleanisBindExceptionRequired(MethodParameter parameter) 検証エラーで致命的なバインド例外を発生させるかどうか。protected booleanisBindExceptionRequired(WebDataBinder binder, MethodParameter parameter) 検証エラーで致命的なバインド例外を発生させるかどうか。final ObjectSEresolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) モデルから引数を解決するか、見つからない場合は、デフォルトが使用可能な場合はそれをインスタンス化します。booleansupportsParameter(MethodParameter parameter) パラメーターにModelAttributeのアノテーションが付いている場合、またはデフォルトの解決モードの場合、単純型ではないメソッドパラメーターの場合、trueを返します。booleansupportsReturnType(MethodParameter returnType) メソッドレベルの@ModelAttributeが存在する場合はtrueを返します。デフォルトの解決モードでは、単純型ではない戻り値の型に対してはtrueを返します。protected voidvalidateIfApplicable(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- 戻り値の処理がエラーになる場合