Oracle adf 如何将autoSuggestBehavior与使用鼠标的复制和粘贴一起使用

Oracle adf 如何将autoSuggestBehavior与使用鼠标的复制和粘贴一起使用,oracle-adf,Oracle Adf,我正在实现一个功能,它使用的是autoSuggestBehavior,当用户使用键盘输入时,它可以正常工作,也可以使用Ctrl C、Ctrl V进行输入 但是当用户使用鼠标复制和粘贴时,它不起作用 当前代码为 <af:inputText id="it1" placeholder="#{viewcontrollerBundle['employees.QuickSearch.tooltip']}" autoSubmit="true" valueChangeL

我正在实现一个功能,它使用的是
autoSuggestBehavior
,当用户使用键盘输入时,它可以正常工作,也可以使用Ctrl C、Ctrl V进行输入

但是当用户使用鼠标复制和粘贴时,它不起作用

当前代码为

    <af:inputText id="it1" placeholder="#{viewcontrollerBundle['employees.QuickSearch.tooltip']}" autoSubmit="true"
              valueChangeListener="#{pageFlowScope.employeeQuickSearchBean.onChangeSearchCriteria}"
              binding="#{requestScope.quickSearchInputText}" styleClass="QuickSearchTextBox" maximumLength="100">
        <af:autoSuggestBehavior suggestItems="#{pageFlowScope.employeeQuickSearchBean.getSuggestItems}"/>            
        <af:clientListener method="onQuickSearchFocus" type="focus"/>
        <af:clientListener method="onQuickSearchBlur" type="blur"/>
        <af:clientListener method="onQuickSearchValueChange" type="valueChange"/>
   </af:inputText>
在那里,我只是添加了一个要打印的日志,以检查是否可以获得右键单击、复制和粘贴事件,但它不起作用

试试第二号

我在
valueChangeListener=“#{pageFlowScope.employeeQuickSearchBean.onChangeSearchCriteria}”中添加了一个日志
,它也没有得到该事件

我发现原因可能是当我右键单击并选择粘贴选项时,鼠标已经离开了输入组件,这使得这些代码无法工作


有人能给我一个解决方案吗?

我从一个朋友那里得到了答案,这个答案很好,我想与大家分享

基本上,ADF不支持这一点,我们需要覆盖
\u fireMouseIn

if (this.constructor._typeName == "AdfAutoSuggestBehavior") {
this._fireMouseIn = function (componentEvent) {

    var component = componentEvent.getSource();
    if (component && component instanceof AdfUIEditableValue) {
        var target = componentEvent.getNativeEventTarget();
        var value = target.getAttribute(AdfAutoSuggestBehavior._ITEM_VALUE_ATTR);
        if (value && value.length > 0) {
            var allItems = AdfDomUtils.getChildElements(target.parentNode);
            for (var j = 0;j < allItems.length;j++) {
                var item = allItems[j];
                this._updateSelectedStyle(item, false)
            }
            this._updateSelectedStyle(target, true)
        }

        //Customize from here
        if (component.registedAutoSuggest) {
            return;
        }
        component.registedAutoSuggest = true;

        var contentNode = AdfDhtmlEditableValuePeer.GetContentNode(component);
        var that = this;
        contentNode.addEventListener('paste', function (event) {
            var page = AdfPage.PAGE;
            if (that._timerId) {
                page.rescheduleTimer(that._timerId, 500)
            }
            else {
                that._timerId = page.scheduleTimer(that, that._autoSuggest, component, 500)
            }
        });
    }

};
}
if(this.constructor.\u typeName==“AdfAutoSuggestBehavior”){
此._fireMouseIn=函数(componentEvent){
var component=componentEvent.getSource();
if(组件和组件实例的AdfUIEditableValue){
var target=componentEvent.getNativeEventTarget();
var value=target.getAttribute(AdfAutoSuggestBehavior.\u ITEM\u value\u ATTR);
如果(value&&value.length>0){
var allItems=AdfDomUtils.getChildElements(target.parentNode);
对于(var j=0;j
function invokeQuickSearchAutoSuggestion(event){
   console.log('call here');
   var inputTextComponent = event.getSource();   
   AdfCustomEvent.queue(inputTextComponent, "invokeQuickSearchAutoSuggestionFromBean",{fvalue:component.getSubmittedValue()}, false);
   event.cancel();
}
if (this.constructor._typeName == "AdfAutoSuggestBehavior") {
this._fireMouseIn = function (componentEvent) {

    var component = componentEvent.getSource();
    if (component && component instanceof AdfUIEditableValue) {
        var target = componentEvent.getNativeEventTarget();
        var value = target.getAttribute(AdfAutoSuggestBehavior._ITEM_VALUE_ATTR);
        if (value && value.length > 0) {
            var allItems = AdfDomUtils.getChildElements(target.parentNode);
            for (var j = 0;j < allItems.length;j++) {
                var item = allItems[j];
                this._updateSelectedStyle(item, false)
            }
            this._updateSelectedStyle(target, true)
        }

        //Customize from here
        if (component.registedAutoSuggest) {
            return;
        }
        component.registedAutoSuggest = true;

        var contentNode = AdfDhtmlEditableValuePeer.GetContentNode(component);
        var that = this;
        contentNode.addEventListener('paste', function (event) {
            var page = AdfPage.PAGE;
            if (that._timerId) {
                page.rescheduleTimer(that._timerId, 500)
            }
            else {
                that._timerId = page.scheduleTimer(that, that._autoSuggest, component, 500)
            }
        });
    }

};
}