See the Servlet Specification information about
RequestDispatcher.forward(), available at:
http://java.sun.com/products/servlet/download.html
Once a response has been committed back to the client, it is not legal to
call RequestDispatcher.forward() (which is what <jsp:forward> does under
the covers), because a forward() tries to erase all the headers -- and
they have already been sent back to the client, so this cannot be done.
A solution is to:
* Move thoe <jsp:forward> call closer towards the beginning of
your page, or
* Increase the buffer size on your page with the <%@ page buffer="xxx" %>
directive
Craig
On Wed, 12 Sep 2001, Rock Luiss wrote:
> Date: Wed, 12 Sep 2001 09:37:17 +0800
> From: Rock Luiss <[EMAIL PROTECTED]>
> Reply-To: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: Attempt to clear a buffer that's already been
> flushed----------when use <jsp:forward>; why?Anybody?
>
> java.io.IOException: Error: Attempt to clear a buffer that's already been flushed
> at org.apache.jasper.runtime.JspWriterImpl.clear(JspWriterImpl.java:180)
> at org.apache.jsp.view_0005fout_jsp._jspService(view_0005fout_jsp.java:1947)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:200)
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:357)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:431)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
> at
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:191)
> at
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:255)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:879)
> at
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:225)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
> at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:879)
> at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2175)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:446)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:879)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:162)
> at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:879)
> at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:827)
> at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:904)
> at java.lang.Thread.run(Thread.java:484)
>