0

将重定向属性添加到闪存映射会导致以下异常

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

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

4

3 回答 3

1

经过一番调查,结果发现为发布到 /foo 的表单提供服务的 JSP 视图具有session=false如下页面指令属性:

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

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

于 2013-03-27T23:55:46.093 回答
1

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

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

在 web.xml 中。它会工作。

于 2013-03-28T04:46:39.207 回答
0

确保在您的配置文件中,url 以正斜杠开头,即“/”,例如“/index.jsp”。

于 2016-08-21T06:53:47.517 回答