在Spring MVC中,
当返回值包含redirect:
前缀时,viewResolver
会将此识别为需要重定向的特殊指示。视图名称的其余部分将被视为redirect URL
。客户端将向此重定向URL发送新请求。
我们可以编写这样的处理程序方法来处理重定向:
@RequestMapping(value="/foo", method = RequestMethod.POST )
public String foo(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "I am message");
return "redirect:/bar";
}
现在我们可以像{/ p>一样在bar()
中访问此redirectAttribute
@RequestMapping(value="/bar", method = RequestMethod.GET )
public String bar(HttpServletRequest request, HttpServletResponse response, Model model) {
String error = (String) model.asMap().get("message");
}
通常我们可以在bar()
方法中访问redirectAttribute,但是当我在返回语句中将URL指定为参数化url时,如下所示
return "redirect:/bar?x=1&y=2";
我无法访问redirectAttributes
我进一步检查了chrome中的网络,我发现在重定向后,在返回语句jsessionid
中使用未参数化的url时保持相同,但在使用参数化URL时它确实发生了变化。
任何人都可以告诉我为什么会发生这种情况或者我在哪里出错?
答案 0 :(得分:1)
如果您想在重定向控制器中访问参数x
和y
的值,则需要从Parameter
获取request
。
@RequestMapping(value="/bar", method = RequestMethod.GET )
public String bar(HttpServletRequest request, HttpServletResponse response, Model model) {
System.out.println(request.getParameter("y"));
return null;
}