方法引數

下表顯示支援的控制器方法引數。

需要阻塞 I/O 的引數(例如,讀取請求 Body)才支援反應式類型 (Reactor、RxJava、或其他)。這在「描述」欄中標記。不需要阻塞的引數不應使用反應式類型。

JDK 1.8 的 java.util.Optional 支援作為方法引數,並與具有 required 屬性的註解(例如,@RequestParam@RequestHeader 和其他)結合使用,且等同於 required=false

控制器方法引數 描述

ServerWebExchange

存取完整的 ServerWebExchange — HTTP 請求和回應的容器、請求和 Session 屬性、checkNotModified 方法等等。

ServerHttpRequestServerHttpResponse

存取 HTTP 請求或回應。

WebSession

存取 Session。除非新增屬性,否則這不會強制啟動新的 Session。支援反應式類型。

java.security.Principal

目前已驗證的使用者 — 如果已知,則可能是特定的 Principal 實作類別。支援反應式類型。

org.springframework.http.HttpMethod

請求的 HTTP 方法。

java.util.Locale

目前的請求地區設定,由最特定的可用 LocaleResolver 決定 — 實際上是已設定的 LocaleResolver/LocaleContextResolver

java.util.TimeZone + java.time.ZoneId

與目前請求相關聯的時區,由 LocaleContextResolver 決定。

@PathVariable

用於存取 URI 範本變數。請參閱 URI 模式

@MatrixVariable

用於存取 URI 路徑區段中的名稱-值配對。請參閱 矩陣變數

@RequestParam

用於存取查詢參數。參數值會轉換為宣告的方法引數類型。請參閱 @RequestParam

請注意,@RequestParam 的使用是選用的 — 例如,設定其屬性。請參閱本表稍後的「任何其他引數」。

@RequestHeader

用於存取請求標頭。標頭值會轉換為宣告的方法引數類型。請參閱 @RequestHeader

@CookieValue

用於存取 Cookie。Cookie 值會轉換為宣告的方法引數類型。請參閱 @CookieValue

@RequestBody

用於存取 HTTP 請求 Body。Body 內容會使用 HttpMessageReader 實例轉換為宣告的方法引數類型。支援反應式類型。請參閱 @RequestBody

HttpEntity<B>

用於存取請求標頭和 Body。Body 會使用 HttpMessageReader 實例轉換。支援反應式類型。請參閱 HttpEntity

@RequestPart

用於存取 multipart/form-data 請求中的部分。支援反應式類型。請參閱 Multipart 內容Multipart 資料

java.util.Maporg.springframework.ui.Model

用於存取 HTML 控制器中使用的模型,並作為檢視呈現的一部分公開給範本。

@ModelAttribute

用於存取模型中現有的屬性(如果不存在則實例化),並套用資料繫結和驗證。請參閱 @ModelAttribute 以及 ModelDataBinder

請注意,@ModelAttribute 的使用是選用的 — 例如,設定其屬性。請參閱本表稍後的「任何其他引數」。

ErrorsBindingResult

用於存取命令物件(即 @ModelAttribute 引數)的驗證和資料繫結中的錯誤。ErrorsBindingResult 引數必須在驗證的方法引數之後立即宣告。

SessionStatus + 類別層級 @SessionAttributes

用於標記表單處理完成,這會觸發清除透過類別層級 @SessionAttributes 註解宣告的 Session 屬性。如需更多詳細資訊,請參閱 @SessionAttributes

UriComponentsBuilder

用於準備相對於目前請求的主機、Port、Scheme 和 Context Path 的 URL。請參閱 URI 連結

@SessionAttribute

用於存取任何 Session 屬性 — 相對於作為類別層級 @SessionAttributes 宣告結果儲存在 Session 中的模型屬性。如需更多詳細資訊,請參閱 @SessionAttribute

@RequestAttribute

用於存取請求屬性。如需更多詳細資訊,請參閱 @RequestAttribute

任何其他引數

如果方法引數與上述任何一項都不符,則預設情況下,如果它是簡單類型(由 BeanUtils#isSimpleProperty 決定),則解析為 @RequestParam,否則解析為 @ModelAttribute