2013-03-27 77 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'。

相關問題