Spring flash属性不工作,具体取决于重定向URL

Spring flash属性不工作,具体取决于重定向URL,spring,spring-mvc,redirect,Spring,Spring Mvc,Redirect,我使用SpringWebMVC4.3.5测试了下面的代码 以下控制器显示了重定向后flash属性正常工作的示例: @Controller @RequestMapping("/redirection") public class RedirectionController { private static final Logger logger = Logger.getLogger(RedirectionController.class); @RequestMapping(pa

我使用SpringWebMVC4.3.5测试了下面的代码

以下控制器显示了重定向后flash属性正常工作的示例:

@Controller
@RequestMapping("/redirection")
public class RedirectionController {

    private static final Logger logger = Logger.getLogger(RedirectionController.class);

    @RequestMapping(path="/pageA", method=RequestMethod.GET)
    public String foo(RedirectAttributes redirectAttributes
                      , HttpServletRequest request
                      ) {
        redirectAttributes.addFlashAttribute("foo", "bar");
        return String.format("redirect:%s", "/redirection/pageB.do");
    }

    @RequestMapping(path="/pageB", method=RequestMethod.GET)
    public String boo(final HttpServletRequest request, final Model model) {
        printModelAttributes(model);
        return "page-b";
    }

    private static void printModelAttributes(final Model model) {
        Map<String, Object> map = model.asMap();
        logger.info(String.format("model attributes are: %s", map.keySet()));
    }    
}
…致:

return String.format("redirect:%s", "/.."+request.getContextPath()+"/redirection/pageB.do");
…我们仍然被重定向到相同的
/pageB
路径,但这次缺少flash属性:

14:34:51892信息[webgui.RedirectionController](http-/127.0.0.1:8082-3)模型属性为:[]

我假设这是因为SpringMVC试图变得聪明,并试图猜测重定向是否会将我们带到另一个应用程序(不同的上下文路径),在这种情况下,它不会在会话中放置flash属性,因为它们在另一个应用程序中无论如何都不可用

显然,重定向字符串中出现的
/..
会使Spring MVC认为我们正在更改应用程序

我的问题是:

  • 该功能是否有文档记录
  • 我的解释是合理的还是错误

这与Adobe的
Flash有什么关系?您是否询问有关闪存消息的问题?我创建了一个示例spring boot 1.4.3应用程序,它使用spring 4.3.5,使用您提供的代码,我无法重新创建该问题。当使用“redirect:/…”时,它无法正确重定向,并且在我的本地主机上,在RedirectView.sendRedirect中引发IllegalArgumentException
return String.format("redirect:%s", "/.."+request.getContextPath()+"/redirection/pageB.do");