Spring MVC RedirectAttributes
作用
在不同页面间跳转时可以使用RedirectAttributes.addFlashAttribute通过键值对的方式保存起始页面中一些有用的数据,当跳转到目的页面时可以在数据模型中通过key获取。
Controller.java
@RequestMapping(path = "/knowledge", params = "add")
public String knowledgeAddPage(@ModelAttribute("knowledge") @Validated({CreateGroup.class}) Knowledge knowledge,BindingResult bindingResult,RedirectAttributes redirectAttributes){
if(bindingResult.getErrorCount()>0){
return "knowledge";
}else{
knowledgeService.addKnowledge(knowledge);
model.clear();
redirectAttributes.addFlashAttribute("message","suc");
return "redirect:knowledge";
}
}
@RequestMapping(path = "/knowledge")
public String knowledgePage(@ModelAttribute("message") String message){
//knowledge对应的view页面可以通过${message}来获取message对应的值,即便是没有设定@ModelAttribute("message") String message也能在view页面中通过同样的方式获取,因为此键值对数据已存放在数据模型中
return "knowledge";
}
为什么会出现此类来保存页面跳转间的数据
与防止数据重复提交的 POST/Redirect/GET 模式有关,推荐看如下的博文
SpringMVC addFlashAttribute的分析与使用示例