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)
}
});
}
};
}