[
https://issues.apache.org/jira/browse/MYFACES-2640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862551#action_12862551
]
Mark Li commented on MYFACES-2640:
----------------------------------
1、html element is dirty.
oringal
myfaces._impl._util._Utils.getParent = function (request, context, item,
tagNameToSearchFor) {
try {
if ("undefined" == typeof item || null == item) {
throw Error("myfaces._impl._util._Utils.getParen: item is null
or undefined,this not allowed")
}
var parentItem = ("undefined" != typeof item.parentNode) ?
item.parentNode : null;
if ("undefined" != typeof item.tagName && null != item.tagName &&
item.tagName.toLowerCase() == tagNameToSearchFor) {
return item
}
while (parentItem != null && parentItem.tagName.toLowerCase() !=
tagNameToSearchFor) {
parentItem = parentItem.parentNode
}
..........
};
fix:
myfaces._impl._util._Utils.getParent = function (request, context, item,
tagNameToSearchFor) {
try {
if ("undefined" == typeof item || null == item) {
throw Error("myfaces._impl._util._Utils.getParen: item is null
or undefined,this not allowed")
}
////////////// start write by mark
if (item.id != null && item.id != '') item =
document.getElementById(item.id);
////////////// end write by mark
var parentItem = ("undefined" != typeof item.parentNode) ?
item.parentNode : null;
if ("undefined" != typeof item.tagName && null != item.tagName &&
item.tagName.toLowerCase() == tagNameToSearchFor) {
return item
}
while (parentItem != null && parentItem.tagName.toLowerCase() !=
tagNameToSearchFor) {
////////////// start write by mark
if (parentItem.id != null && parentItem.id != "") {
parentItem = document.getElementById(parentItem.id);
}
////////////// end write by mark
parentItem = parentItem.parentNode
}
...................
};
> (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.