小编典典

Spring RedirectAttributes:addAttribute()与addFlashAttribute()

spring

到目前为止,我对控制器请求映射方法的理解是,我们可以指定RedirectAttributes参数,并在请求重定向时使用属性填充该参数。

范例:

@RequestMapping(value="/hello", method=GET)
public String hello(RedirectAttributes redirAttr)
{
   // should I use redirAttr.addAttribute() or redirAttr.addFlashAttribute() here ?

   // ...

   return "redirect:/somewhere";
}

然后,重定向属性将在重定向到的目标页面上可用。

但是,RedirectAttributes类具有两种方法:

  • addAttribute()
  • addFlashAttribute()

读了一段时间的Spring文档,但我有点迷茫。两者之间的根本区别是什么,我应该如何选择使用哪一个?


阅读 1688

收藏
2020-04-13

共1个答案

小编典典

这里是区别:

  • addFlashAttribute()实际上将属性存储在Flashmap中 (该属性在用户内部维护,session并在下一个重定向请求得到满足时删除)

  • addAttribute()本质上是根据你的属性构造请求参数,然后使用请求参数重定向到所需的页面。

因此,优势的addFlashAttribute()将是你可以几乎任何对象存储在你的闪光属性(因为它不序列化到所有请求参数,而是保持为对象),而与addAttribute()因为你添加被转换成一个正常的对象请求参数,你非常受限于像对象String或原语这样的对象类型。

2020-04-13