Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.1-Beta
-
Component/s: Sample Apps
-
Labels:None
-
Environment:ICEfaces2 com-suite demo using grimlock run #25882
-
Affects:Compatibility/Configuration
-
Workaround Exists:Yes
-
Workaround Description:Workaround is to remove the <ui:debug> tag from the page.
Description
The comp-suite ace->dataTable->Scrolling demo page features an h:inputText to set the height of the dataTable. When the user types a value into this h:inputText, it results in the browser failing with a StackOverflow error.
Here's the URL to the page in the comp-suite demo:
http://localhost:8080/comp-suite/showcase.jsf?grp=aceMenu&exp=dataTableScrolling
Here's the snippet of page markup:
<ui:define name="example">
<h:form>
<icecore:singleSubmit/>
<h:panelGrid columns="3">
<h:outputLabel for="scrollingIn" value="Enable Scrolling:"/>
<h:selectBooleanCheckbox id="scrollingIn" value="#{dataTableScrolling.scrolling}"/>
<h:message for="scrollingIn"/>
<h:outputLabel for="heightIn" value="Table Height (in pixels):"/>
<h:inputText id="heightIn" value="#{dataTableScrolling.height}"
required="true" size="3" maxlength="3"
disabled="#{!dataTableScrolling.scrolling}">
<f:validateLongRange minimum="50" maximum="500"/>
</h:inputText>
<h:message for="heightIn"/>
</h:panelGrid>
</h:form>
...and here's the JS error (from Chrome, in this case, but happens in IE7 too and possibly others):
Uncaught RangeError: Maximum call stack size exceeded
apply
obj.(anonymous function)
document.onkeyup
apply
obj.(anonymous function)
document.onkeyup
apply
obj.(anonymous function)
document.onkeyup
apply
... and so on.
Here's the URL to the page in the comp-suite demo:
http://localhost:8080/comp-suite/showcase.jsf?grp=aceMenu&exp=dataTableScrolling
Here's the snippet of page markup:
<ui:define name="example">
<h:form>
<icecore:singleSubmit/>
<h:panelGrid columns="3">
<h:outputLabel for="scrollingIn" value="Enable Scrolling:"/>
<h:selectBooleanCheckbox id="scrollingIn" value="#{dataTableScrolling.scrolling}"/>
<h:message for="scrollingIn"/>
<h:outputLabel for="heightIn" value="Table Height (in pixels):"/>
<h:inputText id="heightIn" value="#{dataTableScrolling.height}"
required="true" size="3" maxlength="3"
disabled="#{!dataTableScrolling.scrolling}">
<f:validateLongRange minimum="50" maximum="500"/>
</h:inputText>
<h:message for="heightIn"/>
</h:panelGrid>
</h:form>
...and here's the JS error (from Chrome, in this case, but happens in IE7 too and possibly others):
Uncaught RangeError: Maximum call stack size exceeded
apply
obj.(anonymous function)
document.onkeyup
apply
obj.(anonymous function)
document.onkeyup
apply
obj.(anonymous function)
document.onkeyup
apply
... and so on.
Adding the following to a modified page in basic works as expected:
<h:form>
{basic.visible}"/><icecore:singleSubmit/>
<h:panelGrid columns="3">
<h:outputLabel for="scrollingIn" value="Enable Scrolling:"/>
<h:selectBooleanCheckbox id="scrollingIn" value="#
<h:message for="scrollingIn"/>
<h:outputLabel for="heightIn" value="Table Height (in pixels):"/>
<h:inputText id="heightIn" value="55"
required="true" size="3" maxlength="3"
disabled="#{basic.visible}
">
<f:validateLongRange minimum="50" maximum="500"/>
</h:inputText>
<h:message for="heightIn"/>
</h:panelGrid>
</h:form>
So there must be an interaction with JavaScript present in the comp-suite demo or icefaces-ace.jar.