[ 
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

Reply via email to