The ICEfaces EE distribution includes the Core Extensions library which improves certain specific behaviours of standard JSF 2. These fixes are part of a separate library named icefaces-ee-ext.jar.
The following sections detail the specific adjustments and features that the Core Extension library provides:
During normal processing of a Facelets file, JSF encapsulates plain HTML tags that are not components as UIInstructions components. The result in the component tree is a hierarchy that is not obvious or intuitive.
For example, let's take the following markup:
<h:panelGrid columns="1"> <center> <h:inputText .../> </center> </h:panelGrid>
The expected component tree would be a <center> tag as the only child of the <h:panelGrid>, and the parent of the <h:inputText>. With standard JSF, what happens instead is that <h:panelGrid> has 3 children: a UIInstructions child corresponding to the opening <center> tag, the <h:inputText>, and a UIInstructions child corresponding to the closing </center> tag. The <h:panelGrid> component then renders each of its children into a separate <td> tag, which will confuse the browser, since the starting <center> will be in a separate <td> than the ending </center>.
ICEfaces EE Core Extensions changes this behaviour by modifying the namespace of standard HTML tags so that an actual component is created for each one, resulting in a component tree hierarchy that more closely matches the actual page structure. To enable this feature, you must add a the following configuration parameter to the web.xml file of your application:
<context-param> <param-name>javax.faces.FACELETS_DECORATORS</param-name> <param-value>com.icesoft.facelets.HtmlTagDecorator</param-value> </context-param>
In stock JSF, the strategy used to update the style attribute of input elements in the client's DOM does not work properly in Internet Explorer 6 & 7. The notable behaviour is that the "visible" attribute on input components does not operate correctly, but any dynamic changes to the style attribute will fail. The Core Extensions library patches the client code so that style attributes can be properly updated when running in IE allowing the "visible" attribute to work correctly.
When a ViewRoot update, which is a DOM update for the entire document, occurs, the client side code fails to re-evaluate JavaScript code that appears in the <head> portion of the new document. This can obviously have a broad impact on the behaviour of the updated page. The Core Extensions library patches the client code so that all script references are extracted from the incoming update and then re-evaluated after the DOM update has been applied.