Flash 屬性
Flash 屬性提供了一種方式,允許一個請求儲存旨在用於另一個請求的屬性。這在重定向時最常用到——例如,Post-Redirect-Get 模式。Flash 屬性在重定向之前(通常在會話中)臨時儲存,以便在重定向後的請求中可用,並立即被移除。
Spring MVC 有兩個主要的抽象來支援 Flash 屬性。FlashMap
用於儲存 Flash 屬性,而 FlashMapManager
用於儲存、檢索和管理 FlashMap
例項。
Flash 屬性支援始終處於“開啟”狀態,無需顯式啟用。但是,如果不使用,它永遠不會導致建立 HTTP 會話。在每個請求中,都有一個包含前一個請求傳遞屬性(如果有)的“輸入” FlashMap
,以及一個包含為後續請求儲存屬性的“輸出” FlashMap
。這兩個 FlashMap
例項都可以透過 RequestContextUtils
中的靜態方法在 Spring MVC 的任何地方訪問。
帶註解的控制器通常不需要直接使用 FlashMap
。相反,@RequestMapping
方法可以接受 RedirectAttributes
型別的引數,並使用它為重定向場景新增 Flash 屬性。透過 RedirectAttributes
新增的 Flash 屬性會自動傳播到“輸出” FlashMap。類似地,在重定向之後,來自“輸入” FlashMap
的屬性會自動新增到服務目標 URL 的控制器的 Model
中。