You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by David Schlotfeldt <tc...@plauditdesign.com> on 2006/03/21 04:40:37 UTC

jscookmenu - why does getValue() always return a string?

Two quick questions. I am using the jscookmenu. I have an actionListener 
set on a menu item. Here is the JSF code:
------------------------------
      <t:jscookMenu id="cmsMenu" layout="hbr" theme="ThemeOffice">
               <t:navigationMenuItem id="nav_1" 
actionListener="#{menu.onMenuItemAction}"
                  itemLabel="TEST LABEL" itemValue="#{menu.test}"
                  action="#{menu.menuItemAction}"/>
      </t:jscookMenu>
------------------------------

The java code of the menu backing bean...
------------------------------
public class CMSMenu {
    public MenuItem getTest() {
        Site site = this.getSiteInstance();
        List<MenuItem> list = site.getMenuItems();
        return list.get(0);
    }
    public void onMenuItemAction(ActionEvent event) {
        if (event.getComponent() instanceof HtmlCommandNavigationItem) {
            System.out.println("     ActionListener 
(HtmlCommandNavigationItem):" + 
((HtmlCommandNavigationItem)event.getComponent()).getValue());
        } else {
            String outcome = (String)((HtmlCommandJSCookMenu) 
event.getComponent()).getValue();
            System.out.println("     ActionListener 
(HtmlCommandJSCookMenu): " + outcome);
        }
    }
}
------------------------------

Okay.. the two questions:
1. Why is the object returned by event.getComponent() always a 
HtmlCommandJSCookMenu object and never a HtmlCommandNavigationItem?
       (having the 'if' in the action listener is something I saw the 
jscookmenu using.)
2. Why is what the following (which is in the code above) returns always 
a String? It seems a toString() is ran on whatever the menu item's value is.
       (String)((HtmlCommandJSCookMenu) event.getComponent()).getValue()
     Is there a way to get the actual object of the item's value instead 
of the string representation of it?

(I am using the nightly build of myfaces & tomahawk.)

Thanks,
David