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

session=false調査の結果、/foo にポストするフォームを提供する JSP ビューには、次のようなページ ディレクティブ属性が含まれていることが判明しました。

<%@ 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 に答える