Flash 屬性
Flash 屬性提供一種方式,讓一個請求儲存預期在另一個請求中使用的屬性。這在重導時最為常見 — 例如,Post-Redirect-Get 模式。Flash 屬性在重導之前暫時儲存(通常在 session 中),以便在重導後的請求中使用,並立即移除。
Spring MVC 有兩個主要的抽象概念來支援 flash 屬性。FlashMap
用於保存 flash 屬性,而 FlashMapManager
用於儲存、檢索和管理 FlashMap
實例。
Flash 屬性支援始終處於「開啟」狀態,無需明確啟用。但是,如果不使用,則永遠不會導致 HTTP session 建立。在每個請求中,都有一個「輸入」FlashMap
,其中包含從先前請求傳遞的屬性(如果有的話),以及一個「輸出」FlashMap
,其中包含要為後續請求儲存的屬性。兩個 FlashMap
實例都可以通過 RequestContextUtils
中的靜態方法從 Spring MVC 中的任何位置存取。
註解控制器通常不需要直接使用 FlashMap
。相反地,@RequestMapping
方法可以接受 RedirectAttributes
類型的引數,並使用它為重導情境新增 flash 屬性。通過 RedirectAttributes
新增的 flash 屬性會自動傳播到「輸出」FlashMap。同樣地,在重導之後,「輸入」FlashMap
中的屬性會自動新增到服務目標 URL 的控制器的 Model
中。