【发布时间】:2015-12-19 15:49:20
【问题描述】:
在 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";
}
现在我们可以像这样在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 中进一步检查了网络,发现虽然在返回语句中使用未参数化的 url jsessionid 在重定向后保持不变,但在使用参数化的 url 时它确实发生了变化。
谁能告诉我为什么会发生这种情况,或者我在哪里出错了?
【问题讨论】:
-
您为什么不尝试在 bar 方法上调试模型,以便在使用参数化 url 时获取您收到的对象?
-
它只显示 null..一切都适用于未参数化的 url,但会因参数化的 url 而中断
-
你能解决这个问题吗?
标签: spring spring-mvc redirect