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