[ 
https://issues.apache.org/jira/browse/MYFACES-4679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17878274#comment-17878274
 ] 

Werner Punz edited comment on MYFACES-4679 at 8/30/24 11:47 PM:
----------------------------------------------------------------

Ok full analysis:
Following what happens is, that the code relies on a key value pair being 
present on a button to trigger an event.
boolean activateActionEvent = !isReset(uiComponent) && 
isSubmitted(facesContext, uiComponent) && !disabled; HTMLButtonRenderBase!!!

This works more or less for the normal submit as is, now in the ajax case this 
worked only because a second normal html request is triggered on top in this 
case which sends a normal submit!

 Given that both buttons are input type submit: 2 requests were triggered an 
ajax request and a normal submit.
Now this worked on the old code more or less despite being a bug!

By adding the key value pair we trigger the action code in 
HTMLButtonRendererBase and on top of that the buttons were issuing a normal 
request as well.
Blur also added those key value pairs and hence suddenly we have an action and 
a blur being triggered despite only having blur.

It is getting late/early here, so I have to postpone a possible solution!
I also have to reread the ajax spec for this case, its been a while!



was (Author: werpu):
Ok full analysis:
Following what happens is, that the code relies on a key value pair being 
present on a button to trigger an event.
boolean activateActionEvent = !isReset(uiComponent) && 
isSubmitted(facesContext, uiComponent) && !disabled; HTMLButtonRenderBase!!!

This works more or less for the normal submit as is, now in the ajax case this 
worked only because a second normal html request is triggered on top in this 
case which sends a normal submit!

 Given that both buttons are input type submit: 2 requests were triggered an 
ajax request and a normal submit.
Now this worked on the old code more or less despite being a bug!

By adding the key value pair we trigger the action code in 
HTMLButtonRendererBase and on top of that the buttons were issuing a normal 
request as well.
Blur also added those key value pairs and hence suddenly we have an action and 
a blur being triggered despite only having blur.

It is getting late/early here, so I have to postpone a possible solution!
I also have to reread the ajax spec for this case, its been a while!


> 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)

Reply via email to