Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.1, 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:ICEfaces 2.0 only
Description
-
Hide
- Case10097MenuBarExample.war
- 9.33 MB
- Arran Mccullough
-
- META-INF/MANIFEST.MF 0.1 kB
- META-INF/context.xml 0.1 kB
- WEB-INF/classes/com/.../example/Item.class 0.8 kB
- WEB-INF/classes/.../example/TestBean.class 3 kB
- WEB-INF/lib/commons-beanutils.jar 223 kB
- WEB-INF/lib/commons-collections.jar 554 kB
- WEB-INF/lib/commons-digester.jar 137 kB
- WEB-INF/lib/commons-logging.jar 30 kB
- WEB-INF/lib/icefaces-ace.jar 2.34 MB
- WEB-INF/lib/icefaces-compat.jar 2.65 MB
- WEB-INF/lib/icefaces.jar 198 kB
- WEB-INF/lib/jsf-api.jar 602 kB
- WEB-INF/lib/jsf-impl.jar 1.81 MB
- WEB-INF/lib/jxl.jar 689 kB
- WEB-INF/.../krysalis-jCharts-1.0.0-alpha-1.jar 148 kB
- WEB-INF/web.xml 2 kB
- welcomeICEfaces.xhtml 2 kB
-
- screenshot-01.png
- 169 kB
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Alright, pushing this back (out of 2.0.2) due to complexity.
The real problem is in javax.faces.component.UIComponentBase#getFacetsAndChildren. For the dynamic MenuItems component, it returns empty in 1.8 but the dynamically-added children in 2.0. See screenshot 1. I did a compare of the function from mojarra 1.2 and mojarra 2.0.3. They are exactly the same as well. Unexplainable at this level. Maybe something even deeper in the mojarra or framework code?
processDecodes() exactly the same in 2.0 as in 1.8. Yet problem doesn't occur in 1.8. Must be something else? Also code is not just used by case of dynamic menu items. Can't just blindly remove the super processDecodes()?
same behavior happens for actions as well.
In the class MenuItems, the method processDecodes is calling super.processDecodes(context); . The issue seems MenuItems inherits from MenuItemBase, and in super.processDecodes (MenuItemBase.processDecodes) it iterates through the MenuItems children a second time.
Test case that shows the issue, built for Tomcat
As per Mark's comments in mtg about different state-saving strategy in ICEfaces 2, safe to just remove call to super processDecodes.
Revision: 24562
Modified : /icefaces2/trunk/icefaces/compat/components/src/main/java/com/icesoft/faces/component/menubar/MenuItems.java
Revision: 24563
Modified : /icefaces2/branches/icefaces-2.0.x-maintenance/icefaces/compat/components/src/main/java/com/icesoft/faces/component/menubar/MenuItems.java