我在使用richfaces combobox / suggestionbox时遇到了一些问题。当它们与页面一起呈现时,一切正常,但是当我重新呈现它们时,它们就被包含在内,它们不会被渲染,我得到一个JS异常说:
未捕获错误:NOT_SUPPORTED_ERR:DOM异常9
(它看起来像A4J.AJAX.XMLHttpRequest.updatePagePart失败了......)
代码的相关部分:
<a:outputPanel id="autoFillPanel">
<a:outputPanel layout="none" rendered="#{myBean.renderAutofiller}">
<h:inputText id="autofillInput" value="#{myBean.value}" />
<rich:suggestionbox for="autofillInput" var="result"
suggestionAction="#{myBean.autoCompleteFiller}">
<h:column>
<h:outputText value="#{result}" />
</h:column>
</rich:suggestionbox>
</a:outputPanel>
</a:outputPanel>
有什么想法吗?我没有遇到任何其他组件的问题(h:inputTexts等..)
答案 0 :(得分:1)
这似乎是document.importNode的webkit实现的一个问题。要解决此问题,您可以在模板文件中使用这一小段javascript代码:
if( /webkit/.test( navigator.userAgent.toLowerCase() ) ){
var _importNode = window.document.importNode;
window.document.importNode = function(node, deep){
try{
return _importNode.apply(this, arguments);
} catch(e) {
if( e.code == DOMException.NOT_SUPPORTED_ERR ){
// clone and adopt
return document.adoptNode(node.cloneNode(deep));
}
throw e;
}
};
}
答案 1 :(得分:0)
即使这个问题是 old ,我遇到了同样的问题并在我们的应用程序中解决了它。
我们有相同的设置:Richfaces 3.3.3,IE9,修改了Ajax.js以允许IE9以纯模式运行而不是模拟IE7。
在suggestionbox.js中,有一个解决方法让IE保持关注:(第126 ++行)//IE only
if (RichFaces.navigatorType() == RichFaces.MSIE) {
Event.observe(this.element, "focusout", function(event) {
//in IE8+ , event.toElement is no longer supported for focusout
var elt = event.toElement || event.relatedTarget; //CHANGE HERE
while (elt) {
if (elt == this.update) {
this.element.keepFocus = true;
elt = undefined;
} else {
elt = elt.parentNode;
}
}
}.bindAsEventListener(this));
}
随着我标记的更改,代码在IE9中运行正常,并且可以再次滚动滚动条。