每当我设置一个会话属性并尝试访问它时,它第一次变为'null',然后它就可以了。我正在使用Spring Webflow,并且必须在第一次加载页面时设置该属性。
我尝试使用HandlerInterceptorAdapter在我的应用程序中设置特定属性。我在postHandle()方法中添加了一个属性,如下所示:
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HttpSession session = request.getSession(false);
if(session!=null && session.getAttribute("attrib") == null){
session.setAttribute("attrib", attrib);
}
}
在调试时我发现会话变为null,在进一步分析时出现了Spring Webflow本身的错误,所以我像这样覆盖了FlowHandlerAdapter文件的'handle'方法:
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
super.handle(request, response, handler);
ServletExternalContext context = createServletExternalContext(request, response);
HttpSession session = request.getSession(false);
if( session != null && context != null && context.getSessionMap().get("attrib") == null){
context.getSessionMap().put("attrib", attrib);
}
return null;
}
此处的会话也是第一次为空。
我甚至尝试在<action-state>
块中的<on-entry>
块中的视图状态内呈现视图之前定义操作,然后甚至是<on-render>
块。似乎什么都没有用!