重定向屬性

預設情況下,所有模型屬性都被視為重定向 URL 中的 URI 模板變數。其餘屬性中,基本型別或基本型別集合或陣列的屬性會自動作為查詢引數附加。

如果模型例項是專門為重定向準備的,那麼將基本型別屬性作為查詢引數附加可以是期望的結果。但是,在帶註解的控制器中,模型可能包含為渲染目的新增的額外屬性(例如,下拉欄位值)。為了避免此類屬性出現在 URL 中的可能性,@RequestMapping 方法可以宣告一個 RedirectAttributes 型別的引數,並使用它來指定要提供給 RedirectView 的確切屬性。如果方法執行重定向,則使用 RedirectAttributes 的內容。否則,使用模型的內容。

RequestMappingHandlerAdapter 提供了一個名為 ignoreDefaultModelOnRedirect 的標誌,您可以使用它來指示如果控制器方法重定向,則永遠不應使用預設 Model 的內容。相反,控制器方法應宣告一個 RedirectAttributes 型別的屬性,如果未宣告,則不應將任何屬性傳遞給 RedirectView。MVC 名稱空間和 MVC Java 配置都將此標誌設定為 false,以保持向後相容性。但是,對於新應用程式,我們建議將其設定為 true

請注意,在展開重定向 URL 時,當前請求中的 URI 模板變數會自動可用,您無需透過 ModelRedirectAttributes 明確新增它們。以下示例演示如何定義重定向

  • Java

  • Kotlin

@PostMapping("/files/{path}")
public String upload(...) {
	// ...
	return "redirect:files/{path}";
}
@PostMapping("/files/{path}")
fun upload(...): String {
	// ...
	return "redirect:files/{path}"
}

將資料傳遞到重定向目標的另一種方法是使用快閃記憶體屬性。與其他重定向屬性不同,快閃記憶體屬性儲存在 HTTP 會話中(因此,不會出現在 URL 中)。有關更多資訊,請參閱 快閃記憶體屬性

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