首页 > 解决方案 > 在 websphere 重定向期间 flashAttributes 丢失

问题描述

在 spring(4.3.2.RELEASE) 和 java(1.8) 应用程序中,我使用 spring-flashAttribute 作为在重定向期间传递参数的机制。

RedirectAttributes rm;
(...)
rm.addFlashAttribute("redirModel", rModel);

问题是:传递属性(通过flashAttribute)适用于tomcat,但对于websphere(8.5.5.11),这些属性在重定向后会丢失。

这些属性传递的地方:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(HttpServletRequest, HttpServletResponse, HandlerMethod) line 804

(...)
mavContainer.addAllAttributes(RequestContextUtils.getInputFlashMap(request));
(...)

其中 RequestContextUtils 通过 org.springframework.web.servlet.support.RequestContextUtils 传递这些属性:

@SuppressWarnings("unchecked")
public static Map<String, ?> getInputFlashMap(HttpServletRequest request) {
    return (Map<String, ?>) request.getAttribute(DispatcherServlet.INPUT_FLASH_MAP_ATTRIBUTE);
}

有人可以解释我应该如何正确地做到这一点吗?

标签: javaspringredirectwebsphere

解决方案


我已经检查并确认在 websphere 上重定向期间使用 flashAttribiute 相关的问题是由 spring 库在从 4.3.2.RELEASE 迁移到 4.3.9.RELEASE 问题消失后引起的。

我没有检查 4.3.9.RELEASE 之前的旧库,所以它可以在旧版本中修复


推荐阅读