Oracle ADF:按下InputText上的键打开页面

时间:2013-10-23 13:50:26

标签: oracle jsf oracle-adf

我有一个InputText,我希望能够在选择InputText时打开一个页面,然后按下键例如:F9。

到目前为止,我有一个javascript,它会监听一个keyPress并且正在运行。而且我也可以显示一个Popup,但是现在我想在按下键时转到另一个页面:

接下来我有了代码:

function handleKeyEvent(evt) {
    var _keyCode = evt.getKeyCode();
    if (_keyCode == AdfKeyStroke.F9_KEY){
        //Do Something ...
          showPopup(evt)
      evt.cancel();
    }
}


function showPopup(event) 
{
    event.cancel();
    var source = event.getSource();
    var popupId = "p1";
    var popup = AdfPage.PAGE.findComponentByAbsoluteId(popupId);


if (!popup.isPopupVisible())
{   
  var hints = {};
  hints[AdfRichPopup.HINT_LAUNCH_ID] = source.getClientId();
  hints[AdfRichPopup.HINT_ALIGN_ID] = source.getClientId(); 
  hints[AdfRichPopup.HINT_ALIGN] = AdfRichPopup.ALIGN_AFTER_START;

  popup.show(hints);
}
}

如何做到这一点?

由于 最诚挚的问候

2 个答案:

答案 0 :(得分:0)

您可以像这样更改handleEventKey函数中的location.href

function handleKeyEvent(evt) {
evt.cancel();
var _keyCode = evt.getKeyCode();
if (_keyCode == AdfKeyStroke.F9_KEY){
    //Change the page
   document.location.href = newUrl;
 }
}

答案 1 :(得分:0)

问题是你想如何导航到这个页面,你周围有什么?

如果您只是需要打开一些外部URL,那么您可以使用Amr(location.href)提供的解决方案。

但是,当您需要导航到任务流程内的另一个视图或应用程序内的其他页面或执行某些操作时。您需要使用动作事件队列。

要从javascript访问辅助bean,您必须使用serverListener组件。 然后你可以从这样的javascript将消息路由到你的监听器:
带有附加参数param1的示例和附加到标识为cmp1的组件的serverListener的示例。 (不要忘记在此组件中添加clientComponent=true选项。

var evenSource = AdfPage.PAGE.findComponent("cmp1");
var paramValue = "parameter value";
AdfCustomEvent.queue(eventSource, "uploadProgress", {param1: paramValue1}, true);

通过这种方式,您可以将事件路由到服务器,然后您就可以从bean中进行导航。

您可以获得更多详情here this sample也许有用。