Details
Description
I discovered this problem after Mircea fixed ICE-6509. To make a long story short, the PortletFaces Bridge has it's own HTML RenderKit so that it can introduce a ResponseWriter:
http://svn.portletfaces.org/svn/portletfaces/bridge/portletfaces-bridge-impl/trunk/src/main/java/org/portletfaces/bridge/renderkit/bridge/ResponseWriterBridgeImpl.java
The purpose of the ResponseWriterBridgeImpl class is explained in the class header JavaDoc, but again, to make things short, it has to filter partial updates or else the Mojarra jsf.js code will perform a DOM replacement of the <body>...</body> when it sees javax.faces.ViewRoot.
The problem is that the ICEfaces DOMPartialViewContext is not respecting the RenderKit chain-of-responsibility when writing partial updates to the response. That means that the ResponseWriterBridgeImpl class is getting bypassed, and ICEfaces is writing partial updates directly to the response.
I've attached a patch that fixes this problem.
BTW, I think this patch will address the comment that I see a couple of times in DOMPartialViewContext.java:
//TODO: need to revisit the strategy for getting the "raw" output writer directly
http://svn.portletfaces.org/svn/portletfaces/bridge/portletfaces-bridge-impl/trunk/src/main/java/org/portletfaces/bridge/renderkit/bridge/ResponseWriterBridgeImpl.java
The purpose of the ResponseWriterBridgeImpl class is explained in the class header JavaDoc, but again, to make things short, it has to filter partial updates or else the Mojarra jsf.js code will perform a DOM replacement of the <body>...</body> when it sees javax.faces.ViewRoot.
The problem is that the ICEfaces DOMPartialViewContext is not respecting the RenderKit chain-of-responsibility when writing partial updates to the response. That means that the ResponseWriterBridgeImpl class is getting bypassed, and ICEfaces is writing partial updates directly to the response.
I've attached a patch that fixes this problem.
BTW, I think this patch will address the comment that I see a couple of times in DOMPartialViewContext.java:
//TODO: need to revisit the strategy for getting the "raw" output writer directly
This patched solves our problems with navigation within Liferay. This patch + Mojarra 2.1.0 = Navigation works without problems outside Liferay as well as inside Liferay.