Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-2.0.0.GA
-
Fix Version/s: 2.1-Beta, 3.0, EE-2.0.0.GA_P01
-
Component/s: ICE-Components
-
Labels:None
-
Environment:-
-
Assignee Priority:P1
-
Workaround Exists:Yes
-
Workaround Description:Set toggleOnInput to false
Description
A row selectable dataTable has a commandLink which opens a popup (either modal or non modal). When the rowSelector attribute toggleOnInput is set to true, the resulting popup displays but the browser appears to hang. This does not occur with toggleOnInput set to false. I see the following JS error in Firebug:
element is null
return parentStream(element.parentNode);
coming from our bridge code here:
function parents(element) {
return Stream(function(cellConstructor) {
function parentStream(e) {
if (e == null || e == document) return null;
return function() {
return cellConstructor(e, parentStream(e.parentNode));
};
}
return parentStream(element.parentNode);
});
}
Test case attached.
element is null
return parentStream(element.parentNode);
coming from our bridge code here:
function parents(element) {
return Stream(function(cellConstructor) {
function parentStream(e) {
if (e == null || e == document) return null;
return function() {
return cellConstructor(e, parentStream(e.parentNode));
};
}
return parentStream(element.parentNode);
});
}
Test case attached.
The last issue is triggered when Ice.tableRowClicked clears the "id" attribute of the hidden input element and later the DOM update tries to apply an update to the same element but fails to find the element in the document (JSF throws a "malformedXML" error).
The clearing of the "id" attribute goes back to
ICE-2874where the "trick" was used to avoid the deselection of the last row when any other action in the page was triggered.After removing the clearing of the "id" and testing again I could not detect any change in behavior of the datatable except the fixing of the JS error. So this was the applied fix. The fix for any regression detected in the future should try to keep in sync the browser DOM with the server side DOM in order to avoid exactly this kind of problems.