RichFaces comboBox/suggestionBox渲染问题



我有一些问题与richfaces组合框/建议框。当它们与页面一起呈现时,一切都很好,但当我渲染它们所包含的内容时,它们就没有呈现,我得到一个js异常,说:

Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 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: inputttexts等..)

这似乎是webkit实现document.importNode的问题。为了避免这个问题,你可以在你的模板文件中使用这一小段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;
        }
    };
}

即使这个问题是旧的,我也遇到了同样的问题,并在我们的应用程序中解决了它。

我们有相同的设置:Richfaces 3.3.3, IE9,修改Ajax.js,允许IE9以本机模式运行,而不是模拟IE7。

在suggested box.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中运行良好,并且可以再次使用滚动条滚动。

相关内容

  • 没有找到相关文章

最新更新