方法引數

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

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

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

控制器方法引數 描述

ServerWebExchange

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

ServerHttpRequest, ServerHttpResponse

訪問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請求中的部件。支援響應式型別。請參閱多部分內容多部分資料

java.util.Maporg.springframework.ui.Model

用於訪問HTML控制器中使用的模型,並作為檢視渲染的一部分暴露給模板。

@ModelAttribute

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

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

ErrorsBindingResult

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

SessionStatus + 類級別 @SessionAttributes

用於標記表單處理完成,這會觸發透過類級別@SessionAttributes註解宣告的會話屬性的清理。有關詳細資訊,請參閱@SessionAttributes

UriComponentsBuilder

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

@SessionAttribute

用於訪問任何會話屬性——與作為類級別@SessionAttributes宣告結果儲存在會話中的模型屬性不同。有關詳細資訊,請參閱@SessionAttribute

@RequestAttribute

用於訪問請求屬性。有關詳細資訊,請參閱@RequestAttribute

任何其他引數

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

© . This site is unofficial and not affiliated with VMware.