クラス ModelAttributeMethodProcessor
- 実装されているすべてのインターフェース:
HandlerMethodArgumentResolver,HandlerMethodReturnValueHandler
- 既知の直属サブクラス
ServletModelAttributeMethodProcessor
@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) リクエストをターゲットオブジェクトにバインドする拡張ポイント。protected ObjectSEconstructAttribute(ConstructorSE<?> ctor, StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest webRequest) 指定されたコンストラクターで新しい属性インスタンスを構築します。protected ObjectSEcreateAttribute(StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest webRequest) モデルで検出されない場合にモデル属性を作成するための拡張ポイント。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) モデルから引数を解決するか、見つからない場合は、デフォルトが使用可能な場合はそれをインスタンス化します。resolveConstructorArgument(StringSE paramName, ClassSE<?> paramType, NativeWebRequest request) booleansupportsParameter(MethodParameter parameter) パラメーターにModelAttributeのアノテーションが付いている場合、またはデフォルトの解決モードの場合、単純型ではないメソッドパラメーターの場合、trueを返します。booleansupportsReturnType(MethodParameter returnType) メソッドレベルの@ModelAttributeが存在する場合はtrueを返します。デフォルトの解決モードでは、単純型ではない戻り値の型に対してはtrueを返します。protected voidvalidateIfApplicable(WebDataBinder binder, MethodParameter parameter) 該当する場合、モデル属性を検証します。protected voidvalidateValueIfApplicable(WebDataBinder binder, MethodParameter parameter, ClassSE<?> targetType, StringSE fieldName, ObjectSE value) 該当する場合、指定された候補値を検証します。
フィールドの詳細
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
protected ObjectSE createAttribute(StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest webRequest) throws ExceptionSE モデルで検出されない場合にモデル属性を作成するための拡張ポイント。Bean プロパティを介した後続のパラメーターバインド(抑制されていない限り)。デフォルトの実装では、通常、使用可能な場合は一意のパブリック no-arg コンストラクターを使用しますが、データクラスの「プライマリコンストラクター」アプローチも処理します。JavaBeans
ConstructorPropertiesアノテーションと、バイトコード内のランタイム保持パラメーター名を理解し、リクエストパラメーターをコンストラクターに関連付けます。名前による引数。そのようなコンストラクターが見つからない場合は、setter メソッドを介した後続の Bean プロパティのバインドを想定して、デフォルトのコンストラクターが使用されます(パブリックでない場合でも)。- パラメーター:
attributeName- 属性の名前 (非null)parameter- メソッドのパラメーター宣言binderFactory- WebDataBinder インスタンスを作成するためwebRequest- 現在のリクエスト- 戻り値:
- 作成されたモデル属性 (非
null) - 例外:
BindException- コンストラクター引数バインディングの失敗の場合ExceptionSE- コンストラクター呼び出しが失敗した場合- 関連事項:
constructAttribute
protected ObjectSE constructAttribute(ConstructorSE<?> ctor, StringSE attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest webRequest) throws ExceptionSE 指定されたコンストラクターで新しい属性インスタンスを構築します。コンストラクターの解決後に
createAttribute(String, MethodParameter, WebDataBinderFactory, NativeWebRequest)から呼び出されます。- パラメーター:
ctor- 使用するコンストラクターattributeName- 属性の名前 (非null)binderFactory- WebDataBinder インスタンスを作成するためwebRequest- 現在のリクエスト- 戻り値:
- 作成されたモデル属性 (非
null) - 例外:
BindException- コンストラクター引数バインディングの失敗の場合ExceptionSE- コンストラクター呼び出しが失敗した場合- 導入:
- 5.1
bindRequestParameters
リクエストをターゲットオブジェクトにバインドする拡張ポイント。- パラメーター:
binder- バインディングに使用するデータバインダーインスタンスrequest- 現在のリクエスト
resolveConstructorArgument
@Nullable public ObjectSE resolveConstructorArgument(StringSE paramName, ClassSE<?> paramType, NativeWebRequest request) throws ExceptionSE - 例外:
ExceptionSE
validateIfApplicable
該当する場合、モデル属性を検証します。デフォルトの実装では、
@jakarta.validation.Valid、Spring のValidated、名前が "Valid" で始まるカスタムアノテーションをチェックします。- パラメーター:
binder- 使用する DataBinderparameter- メソッドのパラメーター宣言- 関連事項:
validateValueIfApplicable
protected void validateValueIfApplicable(WebDataBinder binder, MethodParameter parameter, ClassSE<?> targetType, StringSE fieldName, @Nullable ObjectSE value) 該当する場合、指定された候補値を検証します。デフォルトの実装では、
@jakarta.validation.Valid、Spring のValidated、名前が "Valid" で始まるカスタムアノテーションをチェックします。- パラメーター:
binder- 使用する DataBinderparameter- メソッドのパラメーター宣言targetType- ターゲット型fieldName- フィールドの名前value- 候補値- 導入:
- 5.1
- 関連事項:
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- 戻り値の処理がエラーになる場合