Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-4679

MYFACES-4606 Causes Multiple Events To Queue

    XMLWordPrintableJSON

Details

    Description

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

      Attachments

        1. MYFACES-4679.zip
          20 kB
          Volodymyr Siedlecki

        Activity

          People

            Unassigned Unassigned
            volosied Volodymyr Siedlecki
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: