【问题标题】:Getting exception saying Cannot forward after response has been committed收到异常说在响应提交后无法转发
【发布时间】:2014-03-11 13:39:50
【问题描述】:

您好,我正在使用简单的转发方法,但出现以下异常

java.lang.IllegalStateException: Cannot forward after response has been committed.

我知道如果我尝试在 sendRedirect() 之后进行转发,则会发生此异常,但在我的情况下,它很简单,但我仍然收到此异常。 有趣的部分是此代码在第二个 if 为真时有效。也就是说,

if(strCoyoteRequest.contains("BuildNPlay"))

这很好用。

但它不适用于其他条件。

以下是我的代码

    String strForwardPage = new String();
    String strQueryString = request.getQueryString();

    String strCoyoteRequest = request.getRequestURI();

    if(strCoyoteRequest.contains("AdminConsole"))
        strForwardPage = "/AdminConsole/index.jsp";
    else if(strCoyoteRequest.contains("BuildNPlay"))
        strForwardPage = "/BuildNPlay/index.jsp";
    else if(strCoyoteRequest.contains("Portal"))
        strForwardPage = "/Portal/index.jsp";
    else if(strCoyoteRequest.contains("ServiceDashBoard"))
        strForwardPage = "/ServiceDashBoard/index.jsp";

    RequestDispatcher dispatcher = request.getRequestDispatcher(strForwardPage);
    response.setHeader("Cache-control", "no-cache");
    response.setHeader("Pragma", "no-cache");
    dispatcher.forward(request, response);

【问题讨论】:

  • 请提供完整的堆栈跟踪
  • 您是否在任何地方使用 out.print 只需检查一下,这可能是原因之一

标签: jsp jakarta-ee servlets


【解决方案1】:

转发前请勿拨打response.setHeader(...);。这就是提交响应。

被转发到的页面是在其中进行缓存控制的页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2013-06-25
    • 1970-01-01
    • 2023-03-17
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多