Spring RedirectAttributes导致"在提交响应后无法创建会话"错误

时间:2013-03-27 23:55:46

标签: java spring spring-mvc

向Flash地图添加重定向属性会导致以下异常

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";
}

有谁知道导致此问题的原因/如何调试问题?

3 个答案:

答案 0 :(得分:1)

经过一些调查后,结果发布的JSP视图服务于发布到/ foo的表单有session=false页面指令属性,如下所示:

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

Spring重定向属性使用HttpSession对象,该属性导致跳过HttpSession生成。删除该属性/将其设置为true后,重定向工作正常

答案 1 :(得分:1)

要更好地了解问题,请参阅此链接 http://nirlevy.blogspot.com/2007/09/requestdispatcherforward-and-filters.html 添加更多

<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher> 

在web.xml中。它会工作。

答案 2 :(得分:0)

确保在您的配置文件中,网址以前锋斜线开头,即&#39; /&#39;例如&#39; /index.jsp'。