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 中。