You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/07/21 19:10:32 UTC
svn commit: r796388 -
/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
Author: lu4242
Date: Tue Jul 21 17:10:32 2009
New Revision: 796388
URL: http://svn.apache.org/viewvc?rev=796388&view=rev
Log:
MYFACES-1955 MyFaces 1.2.4 and WebLogic 10.3- strict servlet API: cannot call getWriter() after getOutputStream()
Modified:
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java?rev=796388&r1=796387&r2=796388&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java Tue Jul 21 17:10:32 2009
@@ -86,7 +86,21 @@
}
else if (_byteArrayWriter != null)
{
- getResponse().getOutputStream().write(_byteArrayWriter.toByteArray());
+ // MYFACES-1955 cannot call getWriter() after getOutputStream()
+ // _byteArrayWriter is not null only if getOutputStream() was called
+ // before. This method is called from f:view to flush data before tag
+ // start, or if an error page is flushed after dispatch.
+ // A resource inside /faces/* (see MYFACES-1815) is handled on flushToWriter.
+ // If response.getOuputStream() was called before, an IllegalStateException
+ // is raised on response.getWriter(), so we should try through stream.
+ try
+ {
+ _byteArrayWriter.writeTo(getResponse().getWriter(), getResponse().getCharacterEncoding());
+ }
+ catch (IllegalStateException e)
+ {
+ getResponse().getOutputStream().write(_byteArrayWriter.toByteArray());
+ }
_byteArrayWriter.reset();
_byteArrayWriter.flush();
}