Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.0-EE-Beta1
-
Fix Version/s: 2.0.1
-
Component/s: ICE-Components
-
Labels:None
-
Environment:n/a
Description
The TableRenderer is rendering a non-client id on the header div:
TablerRenderer: line 438:
columnHeaderDiv.setAttribute(HTML.ID_ATTR, "hdrDv"+ columnIndex);
If there are multiple dataTables on the page, they will have identical element id's on the rendered header divs. If a change occurs within the header div of the first dataTable, the DOM diff may become anchored at the non-unique id of the header div without reference to the unique dataTable id. This DOM update will then be inserted into the 1st dataTable, leading to anomalous updates.
TablerRenderer: line 438:
columnHeaderDiv.setAttribute(HTML.ID_ATTR, "hdrDv"+ columnIndex);
If there are multiple dataTables on the page, they will have identical element id's on the rendered header divs. If a change occurs within the header div of the first dataTable, the DOM diff may become anchored at the non-unique id of the header div without reference to the unique dataTable id. This DOM update will then be inserted into the 1st dataTable, leading to anomalous updates.
suggested fix:
Index: C:/work/projects/icefaces-ee2/icefaces/compat/components/src/main/java/com/icesoft/faces/component/ext/renderkit/TableRenderer.java
===================================================================
— C:/work/projects/icefaces-ee2/icefaces/compat/components/src/main/java/com/icesoft/faces/component/ext/renderkit/TableRenderer.java (revision 24082)
+++ C:/work/projects/icefaces-ee2/icefaces/compat/components/src/main/java/com/icesoft/faces/component/ext/renderkit/TableRenderer.java (working copy)
@@ -435,7 +435,7 @@
tr.appendChild(handlerTd);
}
Element columnHeaderDiv = domContext.createElement(HTML.DIV_ELEM);
+ columnHeaderDiv.setAttribute(HTML.ID_ATTR, ClientIdPool.get(htmlDataTable.getClientId(facesContext)UINamingContainer.getSeparatorChar(facesContext)"hdrDv"+ columnIndex));
th.appendChild(columnHeaderDiv);
if (htmlDataTable.isResizable()) {
String nextWidth = htmlDataTable.getNextResizableTblColumnWidth();
@@ -511,7 +511,7 @@
Element cursorParent = th;
if (htmlDataTable.isResizable()) {
Element columnHeaderDiv = domContext.createElement(HTML.DIV_ELEM);
+ columnHeaderDiv.setAttribute(HTML.ID_ATTR, ClientIdPool.get(htmlDataTable.getClientId(facesContext)UINamingContainer.getSeparatorChar(facesContext)"hdrDv"+ columnIndex);
th.appendChild(columnHeaderDiv);
width = htmlDataTable.getNextResizableTblColumnWidth();
if (width != null) {