2013-03-27 72 views
0

添加重定向属性的闪图效果在以下例外春RedirectAttributes导致“无法创建响应后会话一直致力于”错误

java.lang.IllegalStateException: Cannot create a session after the response has been committed 
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2377) 
    at org.apache.catalina.connector.Request.getSession(Request.java:2097) 
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833) 
    at org.springframework.web.servlet.support.DefaultFlashMapManager.retrieveFlashMaps(DefaultFlashMapManager.java:149) 
    at org.springframework.web.servlet.support.DefaultFlashMapManager.requestCompleted(DefaultFlashMapManager.java:202) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:830) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 

这是我的请求处理程序是什么样子

@RequestMapping(value = "/foo", method = RequestMethod.POST) 
public String getFoo(RedirectAttributes attr) { 
    attr.addFlashAttribute("twiddle", "doodle"); 
    return "redirect:/cow"; 
} 

有谁知道是什么原因导致/如何调试问题?

回答

1

经过一番调查,原来,服务的形式将信息分为/富了session=false页面指令属性这样的JSP观点:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" session="false" %> 

春重定向属性使用HttpSession对象,且该属性导致的HttpSession代被跳过。移除属性/设置为true后,重定向工作正常

1

为了更好地理解问题,看到这个链接 http://nirlevy.blogspot.com/2007/09/requestdispatcherforward-and-filters.html 添加更多

<dispatcher>REQUEST</dispatcher> 
<dispatcher>FORWARD</dispatcher> 
在web.xml.It

会工作。

+0

我不确定这是否相关。问题的原因是当我将值添加到flashMapAttributes中时,没有任何可用的HttpSession对象。在Spring MVC post-redirect-get模式中,HttpSession用于在重定向完成后获取属性之前立即存储属性 – gerrytan 2013-03-28 04:56:45

0

确保在您的配置文件中,网址以一个正斜杠开头,即'/',例如'/index.jsp'。

相关问题