メソッド引数

次の表に、サポートされているコントローラーメソッドの引数を示します。リアクティブ型は、引数に対してサポートされていません。

JDK 8 の java.util.Optional は、required 属性(たとえば、@RequestParam@RequestHeader など)を持つアノテーションと組み合わせたメソッド引数としてサポートされており、required=false と同等です。

コントローラーメソッドの引数 説明

WebRequest, NativeWebRequest

サーブレット API を直接使用せずに、リクエストパラメーターとリクエストおよびセッション属性への汎用アクセス。

jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse

特定のリクエストまたはレスポンス型を選択します(たとえば、ServletRequestHttpServletRequest、Spring の MultipartRequestMultipartHttpServletRequest)。

jakarta.servlet.http.HttpSession

セッションの存在を強制します。結果として引数は決して null になりません。セッションアクセスはスレッドセーフではないことに注意してください。複数のリクエストがセッションに同時にアクセスできる場合は、RequestMappingHandlerAdapter インスタンスの synchronizeOnSession フラグを true に設定することを検討してください。

jakarta.servlet.http.PushBuilder

プログラムによる HTTP/2 リソースプッシュ用の Servlet 4.0 プッシュビルダー API。クライアントがその HTTP/2 機能をサポートしていない場合、サーブレット仕様に従って、注入された PushBuilder インスタンスは null になる可能性があることに注意してください。

java.security.Principal

現在認証されているユーザー — 既知の場合、特定の Principal 実装クラスである可能性があります。

カスタムリゾルバーが HttpServletRequest#getUserPrincipal を介してデフォルトの解決にフォールバックする前に解決できるようにするためにアノテーションが付けられている場合、この引数は先行して解決されないことに注意してください。例: Spring Security Authentication は Principal を実装し、@AuthenticationPrincipal でアノテーションが付けられていない限り、HttpServletRequest#getUserPrincipal を介してそのように注入されます。アノテーションが付けられている場合は、Authentication#getPrincipal を介してカスタム Spring Security リゾルバーによって解決されます。

HttpMethod

リクエストの HTTP メソッド。

java.util.Locale

使用可能な最も具体的な LocaleResolver (実際には、構成された LocaleResolver または LocaleContextResolver)によって決定される現在のリクエストロケール。

java.util.TimeZone + java.time.ZoneId

LocaleContextResolver によって決定される、現在のリクエストに関連付けられたタイムゾーン。

java.io.InputStream, java.io.Reader

サーブレット API によって公開されている未加工のリクエスト本文へのアクセス用。

java.io.OutputStream, java.io.Writer

サーブレット API によって公開される生のレスポンス本文へのアクセス用。

@PathVariable

URI テンプレート変数へのアクセス用。URI パターンを参照してください。

@MatrixVariable

URI パスセグメントの名前と値のペアへのアクセス用。マトリックス変数を参照してください。

@RequestParam

マルチパートファイルを含む、サーブレットリクエストパラメーターへのアクセス用。パラメーター値は、宣言されたメソッド引数型に変換されます。@RequestParam およびマルチパートを参照してください。

@RequestParam の使用は、単純なパラメーター値ではオプションであることに注意してください。この表の最後にある「その他の引数」を参照してください。

@RequestHeader

リクエストヘッダーへのアクセス用。ヘッダー値は、宣言されたメソッド引数型に変換されます。@RequestHeader を参照してください。

@CookieValue

クッキーへのアクセス用。Cookie 値は、宣言されたメソッド引数型に変換されます。@CookieValue を参照してください。

@RequestBody

HTTP リクエスト本文へのアクセス用。本文コンテンツは、HttpMessageConverter 実装を使用して、宣言されたメソッド引数型に変換されます。@RequestBody を参照してください。

HttpEntity<B>

リクエストヘッダーと本文へのアクセス用。ボディは HttpMessageConverter で変換されます。HttpEntity を参照してください。

@RequestPart

multipart/form-data リクエストでパーツにアクセスするには、パーツのボディを HttpMessageConverter に変換します。マルチパートを参照してください。

java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap

HTML コントローラーで使用され、ビューレンダリングの一部としてテンプレートに公開されるモデルへのアクセス用。

RedirectAttributes

リダイレクト(クエリ文字列に追加)の場合に使用する属性と、リダイレクト後のリクエストまで一時的に保存されるフラッシュ属性を指定します。リダイレクト属性およびフラッシュ属性を参照してください。

@ModelAttribute

データバインディングと検証が適用されたモデル内の既存の属性(存在しない場合はインスタンス化)へのアクセス用。@ModelAttribute およびモデルおよび DataBinder を参照してください。

@ModelAttribute の使用はオプションであることに注意してください(たとえば、属性を設定するため)。この表の最後にある「その他の引数」を参照してください。

Errors, BindingResult

コマンドオブジェクト(つまり、@ModelAttribute 引数)の検証およびデータバインディングからのエラー、または @RequestBody または @RequestPart 引数の検証からのエラーへのアクセス。検証されたメソッド引数の直後に Errors または BindingResult 引数を宣言する必要があります。

SessionStatus + class-level @SessionAttributes

フォーム処理の補完をマークするために、クラスレベルの @SessionAttributes アノテーションを介して宣言されたセッション属性のクリーンアップをトリガーします。詳細については、@SessionAttributes を参照してください。

UriComponentsBuilder

現在のリクエストのホスト、ポート、スキーム、コンテキストパス、サーブレットマッピングのリテラル部分に関連する URL を準備します。URI リンクを参照してください。

@SessionAttribute

クラスレベルの @SessionAttributes 宣言の結果としてセッションに格納されたモデル属性とは対照的に、任意のセッション属性へのアクセス。詳細については、@SessionAttribute を参照してください。

@RequestAttribute

リクエスト属性へのアクセス用。詳細については、@RequestAttribute を参照してください。

その他の引数

メソッド引数がこのテーブルの以前の値のいずれとも一致せず、それが単純な型(BeanUtils#isSimpleProperty (Javadoc) によって決定される)である場合、@RequestParam として解決されます。それ以外の場合は、@ModelAttribute として解決されます。