[我正在实现一个正在使用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}"
中添加了一个日志,但也没有发生该事件。
[我发现原因可能是当我右键单击并选择“粘贴”选项时,鼠标已经不在输入组件中,这使得这些代码不起作用。
有人可以给我解决方案吗?
基本上,ADF不支持此功能,我们需要覆盖_fireMouseIn