到目前为止,我对控制器请求映射方法的理解是,我们可以指定RedirectAttributes参数,并在请求重定向时使用属性填充该参数。
范例:
@RequestMapping(value="/hello", method=GET) public String hello(RedirectAttributes redirAttr) { // should I use redirAttr.addAttribute() or redirAttr.addFlashAttribute() here ? // ... return "redirect:/somewhere"; }
然后,重定向属性将在重定向到的目标页面上可用。
但是,RedirectAttributes类具有两种方法:
读了一段时间的Spring文档,但我有点迷茫。两者之间的根本区别是什么,我应该如何选择使用哪一个?
这里是区别:
addFlashAttribute()实际上将属性存储在Flashmap中 (该属性在用户内部维护,session并在下一个重定向请求得到满足时删除)
addFlashAttribute()
addAttribute()本质上是根据你的属性构造请求参数,然后使用请求参数重定向到所需的页面。
addAttribute()
因此,优势的addFlashAttribute()将是你可以几乎任何对象存储在你的闪光属性(因为它不序列化到所有请求参数,而是保持为对象),而与addAttribute()因为你添加被转换成一个正常的对象请求参数,你非常受限于像对象String或原语这样的对象类型。
String