Заставьте всплывающее окно с потоком задач закрываться на кнопке "esc"
Я использую JDeveloper 11.1.2.3.0 Я создал поток задач (со страницами jsf, а не jsff), которые я вызываю по нажатию кнопки. Я выбрал отображение Inline Popup, и все работает нормально. Просто он не действует как настоящий af:popup. Когда я нажимаю кнопку "esc", всплывающее окно не закрывается. Кто-нибудь знает как это сделать? Спасибо
ps: я понимаю af: всплывающее окно и отображение потока задач, так как встроенное всплывающее окно отличается, но я бы хотел, чтобы мое всплывающее окно по крайней мере выходило на "esc". Или, если есть какая-то возможность добиться того, что предлагает настоящий af:popup, это было бы здорово:)
3 ответа
Я благодарю @Gawish за ответ, так как он помог мне найти решение. Я не мог использовать это решение, потому что нет типа:"keyPress" в clientListener в ADF 11g. Однако мне это понравилось, и это работает очень хорошо:
window.onkeyup = function (e) {
if (e.keyCode == 27) {
var button = AdfPage.PAGE.findComponentByAbsoluteId('cb1');
AdfActionEvent.queue(button, true);
e.cancel();
}
}
Обратите внимание, e.cancel() в конце обязательно!
Я считаю, что вы могли бы сделать что-то подобное
<af:document title="Press ESC to Cancel" id="d1">
<af:commandButton text="Cancel Button" clientComponent="true" id="cb1" actionListener="#{someScope.someFunction}" action="actionToCallReturn" />
<af:clientListener method="onKeyPress" type="keyPress"/>
<af:resource type="javascript">
function onKeyPress(evt){
var _keyCode = evt.getKeyCode();
if (_keyCode == AdfKeyStroke.ESC_KEY ){
var button = AdfPage.PAGE.findComponentByAbsoluteId('cb1');
AdfActionEvent.queue(button,true);
evt.cancel();
}
}
</af:resource>
</af:document>
Я думаю, что ваш единственный вариант будет JS. Но из того, что я прочитал, кнопка ESC должна вызывать функцию отмены по умолчанию... Я рекомендую вам прочитать это: http://www.oracle.com/technetwork/developer-tools/adf/learnmore/77-ok-cancel-support-in-dialog-351871.pdf