Flash 属性
Flash 属性提供了一种方法,使一个请求能够存储用于另一个请求的属性。这在重定向时最常见 — 例如,Post-Redirect-Get 模式。Flash 属性在重定向之前暂时保存(通常在会话中),以便在重定向后可用于请求,并会立即被移除。
Spring MVC 有两个主要的抽象来支持闪存属性。 FlashMap
用于保存闪存属性,而 FlashMapManager
用于存储、检索和管理 FlashMap
实例。
Flash 属性支持始终是“开启”的,不需要显式启用。然而,如果不使用,它不会导致 HTTP 会话的创建。在每个请求中,有一个“输入” FlashMap
,其中包含来自先前请求的属性(如果有的话),以及一个“输出” FlashMap
,其中包含要保存以供后续请求的属性。这两个 FlashMap
实例可以通过 RequestContextUtils
中的静态方法在 Spring MVC 的任何地方访问。
注解控制器通常不需要直接与 FlashMap
交互。相反,@RequestMapping
方法可以接受一个类型为 RedirectAttributes
的参数,并使用它为重定向场景添加闪存属性。通过 RedirectAttributes
添加的闪存属性会自动传播到“输出” FlashMap。同样,在重定向之后,“输入” FlashMap
中的属性会自动添加到服务目标 URL 的控制器的 Model
中。