Navigation 任务流中的导航问题
我在示例应用程序的任务流导航中遇到了一个问题。我创建了一个包含三个视图和方法的简单Taskflow,如下所示 在“提交时登录”按钮中,单击我正在调用一个托管bean方法“checkInput”,该方法检查用户详细信息并导航到指定的jspx页面,即。该方法返回相应的stirng“admin”或“user”以导航到taskflow中的下一个视图。在这之前,它工作得很好 我的情况是我不想单击任何按钮,在文本字段中输入值并按“Enter”后,我想导航到下一个视图。为此,我创建了clientListener和serverListener,并能够调用serverListener方法,我通过两种方式实现了流导航 1) 调用导航处理程序,如下链接中所述: 其中“cb6”是jspx文件中的命令按钮idNavigation 任务流中的导航问题,navigation,oracle-adf,adf-task-flow,Navigation,Oracle Adf,Adf Task Flow,我在示例应用程序的任务流导航中遇到了一个问题。我创建了一个包含三个视图和方法的简单Taskflow,如下所示 在“提交时登录”按钮中,单击我正在调用一个托管bean方法“checkInput”,该方法检查用户详细信息并导航到指定的jspx页面,即。该方法返回相应的stirng“admin”或“user”以导航到taskflow中的下一个视图。在这之前,它工作得很好 我的情况是我不想单击任何按钮,在文本字段中输入值并按“Enter”后,我想导航到下一个视图。为此,我创建了clientListene
但它们都不起作用
有人能告诉我的代码出了什么问题吗?在上面的场景中,我忽略了第一个,因为它有一些缺点,比如绕过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}"/>