[ http://issues.apache.org/jira/browse/MYFACES-243?page=comments#action_65709 ] Neal Haggard commented on MYFACES-243: --------------------------------------
Yes, the patch solves the problem. > ClientId not used, so JSCookMenu fires multiple actions in tables > ----------------------------------------------------------------- > > Key: MYFACES-243 > URL: http://issues.apache.org/jira/browse/MYFACES-243 > Project: MyFaces > Type: Bug > Versions: 1.0.9 beta > Reporter: Neal Haggard > Assignee: sean schofield > Attachments: patch.txt > > The fix to add the id to the action (so that the proper action can be fired > on decode) works fine for multiple JSCookMenu components on the same page, > however when a JSCookMenu is placed in something that uses the component as a > template (such as within a HtmlDataTable's Column), the NamingContainer > doesn't get invoked, so a click on an action triggers once for every row in > the table. > The simple fix is to change the call to getId() to getClientId(context), > however, that also requires a change to processDecodes, to change the > .indexOf(":") to .lastIndexOf(":"). > There are also some other underlying issues with the id in the rest of the > component. The Javascript that defines the menu uses a generic variable name > of 'menuBar'. If you have more than one JSCookMenu on the page with > different CommandNavigationItems, you will only get the last one. > The solution to this is to supplement the JavaScript variable name with the > clientId, much like the div later in encodeEnd. > I've tied all these changes together by creating a private method called > getMenuId() which encapsulates the logic behind getting the clientId(context) > and converting all the colons(:) to underscores(_). Then in > encodeChildren(), encodeEnd() and encodeNavigationMenuItems(), I use this > method, so that the same id is used throughout. > Also included in my patch is a quick-fix to allow null labels to not print > out the default value (1). > Hopefully this will be a useful addition to the MyFaces Community. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira