我的 Controller 如下所示,它期望 Foo
类型中的 ModelAttribute
:
@RequestMapping(value="/search")
public String search(ModelMap model, @ModelAttribute Foo foo,
HttpServletRequest request) {
.....
}
在另一个 Controller 中,我想将我的 bean Foo
重定向为我的请求 /search
的参数
@RequestMapping(value="/load_search")
public String load_search(ModelMap model, @ModelAttribute Foo foo,
HttpServletRequest request) {
Foo foo = myService.getFoo();
return "redirect:/search";
}
那么我怎样才能实现这一目标呢?如何使用我的 bean foo 作为参数重定向到 /search
,如下所示: /search?arg0=..&arg1=..
其中 arg0, arg1 , .. .
是 bean Foo
的属性吗?
最佳答案
您可以使用RedirectAttributes
。它是特殊参数,允许您传递数据抛出重定向。让我们考虑一下您的代码片段的示例:
@RequestMapping(value="/load_search")
public String load_search(ModelMap model, @ModelAttribute Foo foo,
HttpServletRequest request, RedirectAttributes redirectAttrs) {
Foo foo = myService.getFoo();
redirectAttrs.addFlashAttribute("foo", foo);
return "redirect:/search";
}
在目标方法中foo
将由Spring自动添加到模型中。如果您需要将 foo
映射到 @ModelAttribute
参数,则应显式指定属性名称,如以下示例所示:
@RequestMapping(value="/search")
public String search(ModelMap model, @ModelAttribute("foo") Foo foo,
HttpServletRequest request) {
//here 'foo' will be added to 'model' and mapped to 'foo'
.....
}
有关 RedirectAttributes
的更多详细信息,您可以在 Spring documentation 中找到。 .
关于java - 使用 bean 的属性作为参数进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799785/