我需要将一个对象传递到一个我要重定向的页面
@RequestMapping(value = "/createNewQuest",method={ RequestMethod.GET, RequestMethod.POST })
public ModelAndView createNewQuest(Quest quest,ModelAndView mav) {
questService.addQuest(quest);
mav.addObject("quest", quest);
mav.setViewName("redirect:/control/displayQuest");
return mav;
}
我的控制器类看起来像这样,但displayQuest页面没有得到任务对象?
任何帮助都会非常值得赞赏..
答案 0 :(得分:2)
Spring添加了Flash Attributes来处理这种情况:
带注释的控制器通常不需要使用FlashMap 直。相反,@ RequestMapping方法可以接受参数 键入RedirectAttributes并使用它为a添加flash属性 重定向方案。通过RedirectAttributes添加的Flash属性是 自动传播到“输出”FlashMap。同样之后 “输入”FlashMap中的重定向属性会自动添加 到服务于目标URL的控制器的模型。
示例强>
@RequestMapping(value = "/createNewQuest",method={ RequestMethod.GET, RequestMethod.POST })
public ModelAndView createNewQuest(@ModelAttribute("quest") Quest quest,
BindingResult binding, ModelAndView mav,
final RedirectAttributes redirectAttributes) {
questService.addQuest(quest);
redirectAttributes.addFlashAttribute("quest", quest);
mav.setViewName("redirect:/control/displayQuest");
return mav;
}
答案 1 :(得分:0)
如果您使用的是spring form标签,那么您的表单标签应如下所示
<form:form name="yourformname" id="formid" commandName="quest">
然后你的控制器模型对象“quest”将映射到spring form标签的commandName变量,以后你可以访问变量