[
https://issues.apache.org/jira/browse/MYFACES-4679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17878268#comment-17878268
]
Werner Punz commented on MYFACES-4679:
--------------------------------------
Ok addendum. Not fixable on the client side, a simple button press causes 2
action events.
What happens is that the added key:value pair simply triggers a normal action
event just like it would come from the server. The second one is an ajax
behavior event which has an action event added.
The second one is probably the normal behavior we had for 4606, by added the
key value pair
we trigger basically the ajax and non ajax case.
The server side code needs to be adapted that it does not go into the non ajax
event case if we have an ajax request (this is detectable), to restore the pre
4606 behavior!
The other solution would be to roll back 4606, but do we really want that?
> MYFACES-4606 Causes Multiple Events To Queue
> --------------------------------------------
>
> Key: MYFACES-4679
> URL: https://issues.apache.org/jira/browse/MYFACES-4679
> Project: MyFaces Core
> Issue Type: Bug
> Reporter: Volodymyr Siedlecki
> Priority: Major
> Attachments: MYFACES-4679.zip
>
>
> Easier to demonstrate via the attached app (note that ajax tags have a blur
> event).
> 1) Deploy application with MYFACES-4606 applied.
> 2) Visit index.xhtml
> 3) Click down on the first button (don't let go)
> 4 Move the cursor elsewhere and then let the click go.
> 5) Click anywhere on the page to trigger the blur event (unfocus the button).
> 6) Repeat with the second button
> With the second button, both the listener and confirm actions to occur. Even
> though, the button wasn't actually clicked.
> In my view, only the listener event should occur, not the confirm actions.
> However, by adding the issuing element to the request, JSF thinks the button
> was clicked after all.
> In summary:
> Before 4606:
> Button 1:
> nothing called
> Button 2:
> listener called
> With 4606:
> Button 1:
> confirm called
> Button 2:
> listener called
> confirm called
> The activate action check is here:
> [https://github.com/apache/myfaces/blob/2.3.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java#L65]
> The "isSubmitted" method return true for paramMap.containsKey(clientId) which
> is what the 4606 fix did (add the client id).
> *This there a way to keep the older behavior for this scenario (pre-4606)?*
> Additionally, I've seen the multiple invocations for the listener / confirm,
> but I can't pin point the problem (could be some other button click
> combination).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)