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

Werner Punz commented on MYFACES-2640:
--------------------------------------

Ok the recommendation so far from the open mailinglist is that the multi node 
component case should not occur from the component authors side, I have yet not 
really any confirmation on the actions I can take.
It is either block the update or do just a "soft" error and then proceed.

For now I wont start any further actions on this, but have in mind that if you 
want to handle the ppr case properly
enclose your component code into a node with the client id being the identifier 
for the node, this is the only cross browser working way for both 
implementations, any other construct is bound to fail at least on IE6+ for 
Mojarra by leaving a dirty dom in your way or ruining your layout!


> (JSF.js) Ajax Render component problem, replace with whole fragment not one 
> element.
> ------------------------------------------------------------------------------------
>
>                 Key: MYFACES-2640
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2640
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.0-beta-3
>         Environment: tomcat 6.0.20 java (mac os x )
>            Reporter: Mark Li
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> 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;
>     };

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to