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