Why the attached app manifests the problem under the Facelets environment only and works fine with the JSP?
It seems like we have found a little inconsistency in the DOMDiff operation between the Facelets and Non-Facelets environment.
Let say, if we run the following two pages under the Facelets and non-Facelets enviroment. We will get two different DOMDiff results, Whereas it should be the same.
- Page1 JSP
<ice:portlet>
<ice:outputStyle href="/xmlhttp/css/xp/xp.css" />
<ice:form>
..............
</ice:form>
</ice:portlet>
- Page2 JSP
<ice:portlet>
<ice:outputStyle href="/xmlhttp/css/xp/xp.css" />
<ice:form>
...............
</ice:form>
</ice:portlet>
- Under Facelets if we navigate from Page1 to Page2, we will get the following markup as a result of a DOMDiff operation
<div id="j_id1"><link href="/component-showcase/xmlhttp/css/xp/xp.css" rel="stylesheet" type="text/css" />.......</div></form></div>
- Under Facelets now if we navigate from Page2 to Page1, we will get the following markup as a result of a DOMDiff operation
<div id="j_id1"><link href="/component-showcase/xmlhttp/css/xp/xp.css" rel="stylesheet" type="text/css" />.......</div></form></div>
Whereas in the JSP version we get the differnt DOMDiff result for the same JSP document.
- Under JSP if we navigate from Page1 to Page2, we will get the following markup as a result of a DOMDiff operation
<form action="javascript:;" class="iceFrm" enctype="application/x-www-form-urlencoded" method="post" onsubmit="return false;">....</form>
- Under JSP now if we navigate from Page2 to Page1, we will get the following markup as a result of a DOMDiff operation
<form action="javascript:;" class="iceFrm" enctype="application/x-www-form-urlencoded" method="post" onsubmit="return false;">....</form>
As we can see that in the JSP version, we are getting the "form" level update, and that makes IE happy.
To proof the finding I modified the markup of the JSP pages, so we can get the DOMDiff result, that would contain a "div" as root element and a "link" as immediate child. (e.g.)
-JSP Page 2
<ice:form>
<ice:panelGroup>
<ice:outputStyle href="/xmlhttp/css/xp/xp.css" />
<ice:commandButton action="page1" immediate="true" value="Go to Page 1"/><br/>
</ice:panelGroup>
</ice:form>
It above snippet would show the same problem even under the JSP environment.
Simplified test case (minus the lib directory) that can be run as a web app or portlet
1) Build and deploy as a web app or portlet.
2) Point browser at host:port/calendar_icon/page1.iface
3) Click the button to navigate to page 2
4) Click the button to navigate back to page 1
In IE, when you get back to page 1, the calendar icon is missing and the style of the heading text is no longer correct (back to the default).