Caused by: java.lang.IllegalStateException: The window outpu
viggo.navarsete Feb 7, 2008 3:42 AMFrom time to time I get an exception as described in the subject, and I'm really not sure how to handle it. I'm developing a Richfaces portlet, and it's often when I use richfaces components that I get this exception. If I rewrite things to only use standard JSF components it normally works. Any suggestion what could cause such an exception?
The stacktrace is here:
Caused by: javax.portlet.faces.BridgeException: Error processing render lifecycle at org.ajax4jsf.portlet.ExceptionHandlerImpl.processRenderException(ExceptionHandlerImpl.java:31) at org.ajax4jsf.portlet.AjaxPortletBridge.doFacesRequest(AjaxPortletBridge.java:211) at javax.portlet.faces.GenericFacesPortlet.doFacesDispatch(GenericFacesPortlet.java:142) ... 237 more Caused by: javax.faces.FacesException: java.lang.IllegalStateException: The window output stream is already used at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:306) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at org.ajax4jsf.portlet.AbstractAjaxBridge.render(AbstractAjaxBridge.java:118) at org.ajax4jsf.portlet.AjaxPortletBridge.doFacesRequest(AjaxPortletBridge.java:187) ... 238 more Caused by: java.lang.IllegalStateException: The window output stream is already used at org.jboss.portal.portlet.invocation.response.FragmentResponse.getWriter(FragmentResponse.java:181) at org.jboss.portal.portlet.impl.jsr168.api.RenderResponseImpl.getWriter(RenderResponseImpl.java:118) at org.ajax4jsf.portlet.application.PortletViewHandler.renderView(PortletViewHandler.java:185) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) ... 241 more
and the xhtml file is here (I'm using facelets):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <a4j:portlet> <style> .searchResult { margin: 0; padding: 0; border: 0; } .treeContent { width:450px; vertical-align:top; horizontal-align:left; margin: 0; padding: 0; } .treeDetails { width:830px; vertical-align:top; horizontal-align:right; margin: 0; padding: 0; } .treeLink { text-decoration: none; color: black; } .treeLink:hover { text-decoration: underline; } .summaryGrid { width: 100%; margin: 0; padding: 0; border: 0; } .resultscroller { overflow: auto; height: 700px; } .summaryscroller { overflow: auto; height: 500px; } .entityIcon { vertical-align: middle; margin-right: 5px; } .basicDetails { padding-left: 4px; } .complexDetails { margin: 4px; } .infoMessage { color: red; } .selectedNode { background-color:#BED6F8; } </style> <rich:separator height="1" /> <h:form> <rich:panel id="searchInputPanel"> <f:facet name="header" > <f:verbatim>Search input</f:verbatim> </f:facet> <h:panelGrid columns="3"> <h:outputText value="Name:" /> <h:inputText value="#{searchBean.searchString}" /> <h:commandButton value="Say Hello" action="#{searchBean.search}"/> </h:panelGrid> </rich:panel> <rich:panel id="searchResultPanel" style="borderich:0;" bodyClass="searchResult"> <h:panelGrid columnClasses="treeContent, treeDetails" columns="2" cellpadding="0" cellspacing="0"> <rich:panel bodyClass="resultscroller"> <f:facet name="header"> <f:verbatim>Search Result</f:verbatim> </f:facet> <rich:tree switchType="ajax" value="#{searchBean.searchResultNode.data}" var="item" nodeFace="#{item.type}" selectedClass="selectedNode"> <rich:treeNode highlightedClass="treeLink" type="organizationNode"> <h:selectBooleanCheckbox value="#{item.selected}"> <a4j:support event="onclick" actionListener="#{item.selectDetailsForSummary}" reRender="summaryPanel"/> </h:selectBooleanCheckbox> <a4j:commandLink styleClass="treeLink" reRender="detailsPanel,tbuPanel" actionListener="#{item.lookupDetails}" value="#{item.organizationName}"/> </rich:treeNode> <rich:treeNode highlightedClass="treeLink" type="entityNode"> <h:selectBooleanCheckbox value="#{item.selected}"> <a4j:support event="onclick" actionListener="#{item.selectDetailsForSummary}" reRender="summaryPanel"/> </h:selectBooleanCheckbox> <a4j:commandLink styleClass="treeLink" reRender="detailsPanel,tbuPanel" actionListener="#{item.lookupDetails}" value="#{item.entityId}"/> </rich:treeNode> </rich:tree> </rich:panel> </h:panelGrid> </rich:panel> </h:form> </a4j:portlet> </f:view>
I'm running Richfaces 3.1.3.GA.