Skip to content

Commit ff18eda

Browse files
committed
translate 22.6
1 parent 6520a21 commit ff18eda

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Flash属性提供了一个请求存储属性以便其他请求使用的方式。最常用的情况是在重定向时——比如,Post/Redirect/Get 方式。Flash属性会在重定向前被暂时存储(通常是在session中),让重定向的请求可以获取到,并在重定向后立刻移除。
2+
Spring MVC有两个主要的概念来支持flash属性。`FlashMap`用来保存flash属性,`FlashMapManager`用来保存,检索和管理`FlashMap`实例。
3+
对Flash属性的支持总是打开的,没必要显示的去开启,它不会导致HTTP session的创建。每个请求都有一个输入的`FlashMap`带着前一个请求传递的参数和一个输出的`FlashMap`为之后的请求保存属性。无论在Spring MVC中的哪里,都可以通过`RequestContextUtils`的京唐方法访问`FlashMap`
4+
带注解的控制器通常不需要直接使用`FlashMap`。想法的,`@RequestMapping`方法可以接受类型为`RedirectAttributes`的参数,并用它在重定向的环境下添加flash属性。通过`RedirectAttributes`添加的Flash属性会自动传播的到输出的FlashMap中。相似的,在重定向后,输入的`FlashMap`的属性会自动的添加到目标URL对应的控制器的`Model`中。
5+
> 匹配flash属性到请求
6+
flash属性的概念在其他的一些Web框架中存在,且被证明会在并发中暴露问题。这事因为flash属性会在下个请求之前被保存。然而,下一个请求可能不是预期的接受而是其他异步的请求(比如轮询或是自愿请求),这种情况下flash属性被过早的移除。
7+
为了减少这种问题发生的可能性,`RedirectView`自动为`FlashMap`实例印上路径,请求参数和目标重定向URL的“章”。在查找输入`FlashMap`时,默认的`FlashMapManager`会将该信息与请求匹配。
8+
这并不会完全消除并发问题的可能性,尽管如此,重定向URL中的信息已经大大减少了这个问题。因此建议主要在重定向语义中使用flash属性。

0 commit comments

Comments
 (0)