Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-2.0.0.Alpha1
-
Fix Version/s: EE-2.0.0.Beta1
-
Component/s: Core Extensions
-
Labels:None
-
Environment:ICEfaces 2, both compat and regular
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Compatibility/Configuration
Description
In regular JSF/Facelets, when an html tag, that is not a UIComponent tag, is encountered, it's encapsulated as a UIInstructions component, which affects the component tree hierarchy in a way that's not entirely obvious. Let's say you have a panelGrid, with an html tag as a child, and then inside that an actual component.
<h:panelGrid columns="1">
<center>
<h:inputText .../>
</center>
</h:panelGrid>
You might think that the <center> tag will be a component which is the only child of the <h:panelGrid>, and the parent of the <h:inputText>, but what will instead happen is that <h:panelGrid> will have 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 will then render each if it's children into a separate <TD> tag, which will confuse the browser, since the starting <center> will be in a separate <TD> then the ending </center>. This is illustrated here: http://jira.icefaces.org/browse/ICE-5735
In ICEfaces 1.8.x and before, we had code that specifically made the HTML tags become like components, instead of becoming UIInstructions, so that they would behave as expected. This jira is for replicating that functionality into ICEfaces 2.
This is a jira for some of that previous work: http://jira.icefaces.org/browse/ICE-1092
These are the relevant classes:
com.icesoft.faces.facelets.UIXhtmlTagLibrary
com.icesoft.faces.facelets.UIXhtmlTagDecorator
com.icesoft.faces.facelets.UIXhtmlComponentHandler
com.icesoft.faces.component.UIXhtmlComponent
<h:panelGrid columns="1">
<center>
<h:inputText .../>
</center>
</h:panelGrid>
You might think that the <center> tag will be a component which is the only child of the <h:panelGrid>, and the parent of the <h:inputText>, but what will instead happen is that <h:panelGrid> will have 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 will then render each if it's children into a separate <TD> tag, which will confuse the browser, since the starting <center> will be in a separate <TD> then the ending </center>. This is illustrated here: http://jira.icefaces.org/browse/ICE-5735
In ICEfaces 1.8.x and before, we had code that specifically made the HTML tags become like components, instead of becoming UIInstructions, so that they would behave as expected. This jira is for replicating that functionality into ICEfaces 2.
This is a jira for some of that previous work: http://jira.icefaces.org/browse/ICE-1092
These are the relevant classes:
com.icesoft.faces.facelets.UIXhtmlTagLibrary
com.icesoft.faces.facelets.UIXhtmlTagDecorator
com.icesoft.faces.facelets.UIXhtmlComponentHandler
com.icesoft.faces.component.UIXhtmlComponent
Issue Links
- blocks
-
ICE-5323 Regression: ICE-3147 not working as expected
- Closed
Need a feasibility assessment for this.