我正在使用 JDeveloper 11.1.2.3.0 我创建了一个任务流(使用 jsf 页面而不是 jsff),我在单击按钮时调用它。我选择将其显示为内联弹出窗口,一切正常。只是它不像真正的 af:popup。当我按下“esc”按钮时,弹出窗口不会关闭。有谁知道如何做到这一点?谢谢
ps:我理解 af:popup 和将任务流显示为内联弹出窗口是不同的,但我想让我的弹出窗口至少在“esc”上退出。或者,如果有任何可能实现真正的 af:popup 提供的东西,那就太好了:)
我正在使用 JDeveloper 11.1.2.3.0 我创建了一个任务流(使用 jsf 页面而不是 jsff),我在单击按钮时调用它。我选择将其显示为内联弹出窗口,一切正常。只是它不像真正的 af:popup。当我按下“esc”按钮时,弹出窗口不会关闭。有谁知道如何做到这一点?谢谢
ps:我理解 af:popup 和将任务流显示为内联弹出窗口是不同的,但我想让我的弹出窗口至少在“esc”上退出。或者,如果有任何可能实现真正的 af:popup 提供的东西,那就太好了:)
我相信你可以做这样的事情
<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
我感谢@Gawish 的回复,因为它帮助我找到了解决方案。我无法使用该解决方案,因为 ADF 11g 的 clientListener 中没有 type:"keyPress"。但是我确实喜欢这个并且效果很好:
window.onkeyup = function (e) {
if (e.keyCode == 27) {
var button = AdfPage.PAGE.findComponentByAbsoluteId('cb1');
AdfActionEvent.queue(button, true);
e.cancel();
}
}
注意,最后的 e.cancel() 是强制的!