如何使用autoSuggestBehavior通过鼠标进行复制和粘贴

问题描述 投票:2回答:1

[我正在实现一个正在使用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>

尝试1号

我尝试创建<af:clientListener>来触发<af:serverListener>

    <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="invokeQuickSearchAutoSuggestion" type="mouseDown"/>
        <af:serverListener type="invokeQuickSearchAutoSuggestionFromBean" method="#{pageFlowScope.employeeQuickSearchBean.getSuggestItems}"/>
        <af:clientListener method="onQuickSearchFocus" type="focus"/>
        <af:clientListener method="onQuickSearchBlur" type="blur"/>
        <af:clientListener method="onQuickSearchValueChange" type="valueChange"/>
   </af:inputText>  

在javascript中,我定义了这样的方法

function invokeQuickSearchAutoSuggestion(event){
   console.log('call here');
   var inputTextComponent = event.getSource();   
   AdfCustomEvent.queue(inputTextComponent, "invokeQuickSearchAutoSuggestionFromBean",{fvalue:component.getSubmittedValue()}, false);
   event.cancel();
}

在这里,我只是添加了一个日志以进行打印,以检查是否可以得到右键单击,复制和粘贴事件,但是它不起作用。

尝试2号

我在valueChangeListener="#{pageFlowScope.employeeQuickSearchBean.onChangeSearchCriteria}"中添加了一个日志,但也没有发生该事件。

[我发现原因可能是当我右键单击并选择“粘贴”选项时,鼠标已经不在输入组件中,这使得这些代码不起作用。

有人可以给我解决方案吗?

oracle-adf
1个回答
1
投票
我从我的一个朋友那里得到了答案,我的工作很好,我想分享。

基本上,ADF不支持此功能,我们需要覆盖_fireMouseIn

© www.soinside.com 2019 - 2024. All rights reserved.