MyFaces Core
  1. MyFaces Core
  2. MYFACES-2640

(JSF.js) Ajax Render component problem, replace with whole fragment not one element.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.0.0-beta-3
    • Fix Version/s: 2.0.1
    • Component/s: JSR-314
    • Labels:
      None
    • Environment:
      tomcat 6.0.20 java (mac os x )

      Description

      after ajax submit, jsf.js will re-render some element depending on jsf.ajax.request(

      {render:" some elements "}

      );
      but this js code will cause some problem.

      jsf.js:

      myfaces._impl._util._Utils.replaceHtmlItem = function (request, context, itemIdToReplace, newTag, form)

      { ...... var fragment = range.createContextualFragment(newTag); evalNode = item.parentNode.replaceChild(fragment, item) ..... }

      sometime fragment will has more than one childNodes, or the childNode not has clientId, but the childNode of childNode has clientId.

      this will cause html unstable.

      Please fix it.

      this is my suggestion:

      myfaces._impl._util._Utils.replaceHtmlItem = function (request, context, itemIdToReplace, newTag, form)

      { ............. Orginal: var fragment = range.createContextualFragment(newTag); evalNode = item.parentNode.replaceChild(fragment, item) fix: var fragment = range.createContextualFragment(newTag); var replaceItem = myfaces._impl._util._Utils.findHtmlItemFromFragment(fragment, itemIdToReplace); if(replaceItem == null)replaceItem = fragment; evalNode = item.parentNode.replaceChild(replaceItem, item) .................. }

      myfaces._impl._util._Utils.findHtmlItemFromFragment = function(fragment, itemId){
      if(fragment.childNodes == null)
      return null;
      for(var i = 0; i < fragment.childNodes.length ; i++ )

      { var c = fragment.childNodes[i]; if(c.id == itemId) return c; }

      for(var i = 0; i < fragment.childNodes.length ; i++ )

      { var c = fragment.childNodes[i]; var item = myfaces._impl._util._Utils.findHtmlItemFromFragment(c, itemId); if(item != null) return item; }

      return null;
      };

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Unassigned
            Reporter:
            Mark Li
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 4h
              4h
              Remaining:
              Remaining Estimate - 4h
              4h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development