Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.0.RC1
-
Component/s: ACE-Components
-
Labels:None
-
Environment:ICEfaces 3.0 RC1, All browsers
-
Assignee Priority:P1
-
Workaround Exists:Yes
-
Workaround Description:Remove the f:ajax tag.
Description
In the WIlliams app they have a dataTable where one column contains an inputText field. Editing this field and then submitting the row vie a Menu Item is causing a JavaScript error to be thrown and the app becomes unresponsive. This h:inputText component is using a nested f:ajax tag. Removing this tag resolves the issue.
This issue is reproducible on the Williams POC. To reproduce, load a tab with the Screen 1 content and click the retrieve button to load the table. The Name column contains an inputText field that has a nested f:ajax tag. Editing one of the input fields and then clicking on the Print menu item (top right hand side of page) will cause the JavaScript error to be thrown.
This issue is reproducible on the Williams POC. To reproduce, load a tab with the Screen 1 content and click the retrieve button to load the table. The Name column contains an inputText field that has a nested f:ajax tag. Editing one of the input fields and then clicking on the Print menu item (top right hand side of page) will cause the JavaScript error to be thrown.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
It's not clear what the behaviour in this case should be, other than obviously not blowing up with JS errors. I'd guess that the next f:ajax tag should be ignored since the submit is not being triggered within the h:inputText component?
This issue was fixed by avoiding setting the id to the element and then calling ice.ace.AjaxRequest. Instead, a node reference is provided to ice.ace.AjaxRequest and the id of the element will be set there, inside the function. The passed node reference will be used in the underlying submit functions. One more measure was taken to avoid conflicts with other ajax requests on the page. It consists of triggering the menu action with a delay via the setTimeout() function.