2014-03-28 27 views
1

我需要从弹簧控制器内调用另一个@RequestMapping。现在我可以很容易地做到这一点如何从另一个操作方法调用弹簧控制器@RequestMapping将表单对象与调用

return "redirect:anotherMapping.htm"; 

但我需要在表单对象中传递值。

@RequestMapping("/anotherMapping") 
    public ModelAndView addUser(final @ModelAttribute("userLogin") UserLogin 
    userLogin, final HttpServletRequest request){ 

我需要在UserLogin中传递userId。如果我写返回“redirect:anotherMapping.htm”,那么它会调用这个控制器方法,但表单对象为null。

请帮忙。

+0

查找到'RedirectAttributes'。 –

+0

它在同一个控制器内吗? – Incognito

+0

我认为在控制器中没有办法传递表单对象,是吗? – romhail

回答

4

您可以使用RedirectAttributes。

在下面的示例中,当foo被调用并重定向到/bar时,模型将包含xyz=meow属性。

@RequestMapping(..) 
public String foo(RedirectAttributes redir) { 
    redir.addFlashAttribute("xyz", "meow"); 
    return "redirect:/bar"; 
} 

@RequestMapping("/bar") 
public String bar(Model model) { 
    .. 
} 

如果发现这样做太多的时间,你也许还consider using @SessionAttributes

+0

'我认为这一定会有帮助。我知道我可以使用会话或静态变量来设置ID,然后在表单对象中明确地设置它,但这些不是最好的方法。此外,我认为在控制器中无法传递表单对象,是吗?感谢兄弟的帮助。 – romhail

+0

你是什么意思“在控制器中没有办法传递表单对象”?你可以使用'@ ModelAttribute'和'@ SessionAttribute' – gerrytan

相关问题