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

Scripts executed in reverse order during ajax event

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.1.0-RC2
    • 5.0.0, 4.0.3, 4.1.0-RC3
    • General
    • None
    • Windows, Chrome

    Description

      When myfaces handles an ajax request, the script tags of the rendered xhtml fragments are executed from last to first which is the opposite of what would happen during a regular page load.  I encountered this problem because one of my components references another component in it's constructor and the referenced component didn't exist yet during an ajax call because of reverse execution.  I found the problem code:

      .sort((node1, node2) => node1.compareDocumentPosition(node2) - 3) // preceding 2, following == 4)

      The compareDocumentPosition method compares the node2 position relative to node1's position.  If node2 is preceding node1 then the sort return value should be 1 but in this case it will be -1 as 2 (return of compareDocumentPosition) minus 3 is -1.  The correct code should be:

      .sort((node1, node2) => node2.compareDocumentPosition(node1) - 3) // preceding 2, following == 4)

      Here is a jsfiddle - JSFiddle - Code Playground

       

      Attachments

        Activity

          People

            werpu Werner Punz
            jamieg Jamie Goodfellow
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: