方法引數

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

響應式型別(Reactor、RxJava 或其他)支援需要阻塞 I/O(例如,讀取請求體)才能解析的引數。這在描述列中標記。不需要阻塞的引數預計不使用響應式型別。

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

控制器方法引數 描述

ServerWebExchange

訪問完整的 ServerWebExchange —— HTTP 請求和響應的容器,包含請求和會話屬性,checkNotModified 方法等。

ServerHttpRequestServerHttpResponse

訪問 HTTP 請求或響應。

WebSession

訪問會話。除非新增屬性,否則不會強制啟動新會話。支援響應式型別。

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 請求體。請求體內容使用 HttpMessageReader 例項轉換為宣告的方法引數型別。支援響應式型別。參見@RequestBody

HttpEntity<B>

用於訪問請求頭和請求體。請求體使用 HttpMessageReader 例項轉換。支援響應式型別。參見HttpEntity

@RequestPart

用於訪問 multipart/form-data 請求中的某個部分。支援響應式型別。參見Multipart 內容Multipart 資料

java.util.Maporg.springframework.ui.Model

用於訪問 HTML 控制器中使用的 Model,該 Model 在檢視渲染時暴露給模板。

@ModelAttribute

用於訪問 Model 中現有屬性(如果不存在則例項化),並應用資料繫結和驗證。參見@ModelAttribute,以及ModelDataBinder

請注意,使用 @ModelAttribute 是可選的——例如,用於設定其屬性。參見本表後面的“任何其他引數”。

ErrorsBindingResult

用於訪問命令物件(即 @ModelAttribute 引數)的驗證和資料繫結錯誤。ErrorsBindingResult 引數必須緊接在被驗證的方法引數之後宣告。

SessionStatus + 類級別 @SessionAttributes

用於標記表單處理完成,這將觸發清理透過類級別 @SessionAttributes 註解宣告的會話屬性。更多詳情參見@SessionAttributes

UriComponentsBuilder

用於準備相對於當前請求的主機、埠、方案和上下文路徑的 URL。參見URI 連結

@SessionAttribute

用於訪問任何會話屬性——與因類級別 @SessionAttributes 宣告而儲存在會話中的模型屬性不同。更多詳情參見@SessionAttribute

@RequestAttribute

用於訪問請求屬性。更多詳情參見@RequestAttribute

任何其他引數

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