在春天用模型对象重定向

时间:2014-02-20 11:00:17

标签: java spring jsp

我需要将一个对象传递到一个我要重定向的页面

@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页面没有得到任务对象?

任何帮助都会非常值得赞赏..

2 个答案:

答案 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变量,以后你可以访问变量