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