クラス ModelAttributeMethodProcessor

java.lang.ObjectSE
org.springframework.web.method.annotation.ModelAttributeMethodProcessor
実装されたすべてのインターフェース:
HandlerMethodArgumentResolverHandlerMethodReturnValueHandler
既知の直属サブクラス
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
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • ModelAttributeMethodProcessor

      public ModelAttributeMethodProcessor(boolean annotationNotRequired)
      クラスコンストラクター。
      パラメーター:
      annotationNotRequired - "true" の場合、非単純メソッドの引数と戻り値は、@ModelAttribute アノテーションの有無にかかわらずモデル属性と見なされます
  • メソッドの詳細

    • supportsParameter

      public boolean supportsParameter(MethodParameter parameter)
      パラメーターに ModelAttribute のアノテーションが付いている場合、またはデフォルトの解決モードの場合、単純型ではないメソッドパラメーターの場合、true を返します。
      次で指定:
      インターフェース HandlerMethodArgumentResolversupportsParameter 
      パラメーター:
      parameter - チェックするメソッドパラメーター
      戻り値:
      このリゾルバーが提供されたパラメーターをサポートする場合、true。それ以外の場合は false 
    • resolveArgument

      @Nullable public final ObjectSE resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws ExceptionSE
      モデルから引数を解決するか、見つからない場合は、デフォルトが使用可能な場合はそれをインスタンス化します。次に、データバインディングを介してモデル属性にリクエスト値が入力され、@java.validation.Valid が引数に存在する場合はオプションで検証されます。
      次で指定:
      インターフェース HandlerMethodArgumentResolverresolveArgument 
      パラメーター:
      parameter - 解決するメソッドパラメーター。このパラメーターは、true を返さなければならない HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter) に事前に渡されている必要があります。
      mavContainer - 現在のリクエストの ModelAndViewContainer
      webRequest - 現在のリクエスト
      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

      protected void constructAttribute(WebDataBinder binder, NativeWebRequest request)
      属性を作成し、リクエストをコンストラクター引数にバインドする拡張ポイント。
      パラメーター:
      binder - バインディングに使用するデータバインダーインスタンス
      request - 現在のリクエスト
      導入:
      6.1
    • bindRequestParameters

      protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request)
      setter/fields を介してリクエストをターゲットオブジェクトにバインドする拡張ポイント。
      パラメーター:
      binder - バインディングに使用するデータバインダーインスタンス
      request - 現在のリクエスト
    • validateIfApplicable

      protected void validateIfApplicable(WebDataBinder binder, MethodParameter parameter)
      該当する場合、モデル属性を検証します。

      デフォルトの実装では、@jakarta.validation.Valid、Spring の Validated、名前が "Valid" で始まるカスタムアノテーションをチェックします。

      パラメーター:
      binder - 使用する DataBinder
      parameter - メソッドのパラメーター宣言
      関連事項:
    • isBindExceptionRequired

      protected boolean isBindExceptionRequired(WebDataBinder binder, MethodParameter parameter)
      検証エラーで致命的なバインド例外を発生させるかどうか。

      デフォルトの実装は isBindExceptionRequired(MethodParameter) に委譲します。

      パラメーター:
      binder - データバインディングの実行に使用されるデータバインダー
      parameter - メソッドのパラメーター宣言
      戻り値:
      次のメソッドパラメーターが型 Errors でない場合、true 
      関連事項:
    • isBindExceptionRequired

      protected boolean isBindExceptionRequired(MethodParameter parameter)
      検証エラーで致命的なバインド例外を発生させるかどうか。
      パラメーター:
      parameter - メソッドのパラメーター宣言
      戻り値:
      次のメソッドパラメーターが型 Errors でない場合、true 
      導入:
      5.0
    • supportsReturnType

      public boolean supportsReturnType(MethodParameter returnType)
      メソッドレベルの @ModelAttribute が存在する場合は true を返します。デフォルトの解決モードでは、単純型ではない戻り値の型に対しては true を返します。
      次で指定:
      インターフェース HandlerMethodReturnValueHandlersupportsReturnType 
      パラメーター:
      returnType - チェックするメソッドの戻り値の型
      戻り値:
      このハンドラーが提供された戻り値の型をサポートする場合、true。それ以外の場合は false 
    • handleReturnValue

      public void handleReturnValue(@Nullable ObjectSE returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws ExceptionSE
      NULL 以外の戻り値を ModelAndViewContainer に追加します。
      次で指定:
      インターフェース HandlerMethodReturnValueHandlerhandleReturnValue 
      パラメーター:
      returnValue - ハンドラーメソッドから返された値
      returnType - 戻り値の型。この型は、true を返さなければならない HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter) に事前に渡されている必要があります。
      mavContainer - 現在のリクエストの ModelAndViewContainer
      webRequest - 現在のリクエスト
      例外:
      ExceptionSE - 戻り値の処理がエラーになる場合