Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Navigation 任务流中的导航问题_Navigation_Oracle Adf_Adf Task Flow - Fatal编程技术网

Navigation 任务流中的导航问题

Navigation 任务流中的导航问题,navigation,oracle-adf,adf-task-flow,Navigation,Oracle Adf,Adf Task Flow,我在示例应用程序的任务流导航中遇到了一个问题。我创建了一个包含三个视图和方法的简单Taskflow,如下所示 在“提交时登录”按钮中,单击我正在调用一个托管bean方法“checkInput”,该方法检查用户详细信息并导航到指定的jspx页面,即。该方法返回相应的stirng“admin”或“user”以导航到taskflow中的下一个视图。在这之前,它工作得很好 我的情况是我不想单击任何按钮,在文本字段中输入值并按“Enter”后,我想导航到下一个视图。为此,我创建了clientListene

我在示例应用程序的任务流导航中遇到了一个问题。我创建了一个包含三个视图和方法的简单Taskflow,如下所示

在“提交时登录”按钮中,单击我正在调用一个托管bean方法“checkInput”,该方法检查用户详细信息并导航到指定的jspx页面,即。该方法返回相应的stirng“admin”或“user”以导航到taskflow中的下一个视图。在这之前,它工作得很好

我的情况是我不想单击任何按钮,在文本字段中输入值并按“Enter”后,我想导航到下一个视图。为此,我创建了clientListener和serverListener,并能够调用serverListener方法,我通过两种方式实现了流导航

1) 调用导航处理程序,如下链接中所述:

其中“cb6”是jspx文件中的命令按钮id

但它们都不起作用


有人能告诉我的代码出了什么问题吗?

在上面的场景中,我忽略了第一个,因为它有一些缺点,比如绕过JSF生命周期。谈到secound视图,我可以通过编程方式对n按钮操作进行排队,在输入文本上单击enter来调用secound视图。理论上,我不知道它是如何解决这个问题的,我相信(ADF)爱好者会很高兴听到ADF专家的意见

正如您在jspx文件中的javascript代码中所看到的(最右边的注释),我将AdfCustomEvent.queue()方法的“immediate”属性更改为true,它解决了我的问题

<af:resource type="javascript">
function handleEnterEvent(evt) {        
              var _keyCode = evt.getKeyCode();
              //check for Enter Key
             if (_keyCode == AdfKeyStroke.ENTER_KEY ){          
                var comp = evt.getSource();
                var id=AdfPage.PAGE.findComponentByAbsoluteId('d1');
                AdfCustomEvent.queue(id, "EnterEvent",{fvalue:comp.getSubmittedValue()},true); <-- changed from false to true.
                evt.cancel();
         }
      }
</af:resource>

<af:serverListener type="keyboardToServerNotify"
                     method="#{backingBeanScope.JJS.handleKeyboardEvent}"/>

函数handleInterEvent(evt){
var_keyCode=evt.getKeyCode();
//检查回车键
如果(_keyCode==AdfKeyStroke.ENTER_KEY){
var comp=evt.getSource();
var id=AdfPage.PAGE.findComponentByAbsoluteId('d1');
队列(id,“EnterEvent”{fvalue:comp.getSubmittedValue()},true);
  public void checkEnterEvent(ClientEvent clientEvent) {
    navigateByQueueAction();  
  }

  private void navigateByQueueAction() {
   FacesContext fctx = FacesContext.getCurrentInstance();
   UIViewRoot root = fctx.getViewRoot();
   //client Id of button includes naming container like id of region. 
   RichCommandButton button = 
       (RichCommandButton) root.findComponent("cb6");
   ActionEvent actionEvent = new ActionEvent(button);
   actionEvent.queue();
   }
<af:resource type="javascript">
function handleEnterEvent(evt) {        
              var _keyCode = evt.getKeyCode();
              //check for Enter Key
             if (_keyCode == AdfKeyStroke.ENTER_KEY ){          
                var comp = evt.getSource();
                var id=AdfPage.PAGE.findComponentByAbsoluteId('d1');
                AdfCustomEvent.queue(id, "EnterEvent",{fvalue:comp.getSubmittedValue()},true); <-- changed from false to true.
                evt.cancel();
         }
      }
</af:resource>

<af:serverListener type="keyboardToServerNotify"
                     method="#{backingBeanScope.JJS.handleKeyboardEvent}"/>