Spring 使用参数重定向到控制器操作时无法访问重定向属性
在春季MVC 当返回值包含Spring 使用参数重定向到控制器操作时无法访问重定向属性,spring,spring-mvc,redirect,Spring,Spring Mvc,Redirect,在春季MVC 当返回值包含redirect:前缀时,viewsolver将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。客户端将向该重定向URL发送一个新请求 我们可以编写如下处理程序方法来处理重定向: @RequestMapping(value="/foo", method = RequestMethod.POST ) public String foo(HttpServletRequest request, HttpServletResponse response,
redirect:
前缀时,viewsolver
将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向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()
中访问这个重定向属性
@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";
我无法访问重定向属性
我进一步检查了chrome中的网络,发现在返回语句jsessionid
中使用未参数化的url时,重定向后仍然保持不变,但在使用参数化url时确实会发生变化
有人能告诉我为什么会发生这种情况,或者我在什么地方出错了吗?如果您想访问重定向控制器中的paramater
x
和y
的值,您需要从请求获取参数
@RequestMapping(value="/bar", method = RequestMethod.GET )
public String bar(HttpServletRequest request, HttpServletResponse response, Model model) {
System.out.println(request.getParameter("y"));
return null;
}
为什么不尝试调试基于bar的模型方法,以便在使用参数化url时获取接收到的对象?它只显示null。使用未参数化url时一切正常,但参数化url中断。是否能够解决此问题?不,我想访问FlashAttribute error的值。明确提及