我在示例应用程序的任务流导航中遇到问题。我创建了一个包含三个视图和方法的简单任务流,如下所示。
在登录提交按钮单击时,我正在调用托管 bean 方法“checkInput”,它检查用户详细信息并导航到指定的 jspx 页面,即。该方法返回适当的“管理员”或“用户”以导航到任务流中的下一个视图。直到它工作正常。
我的情况是我不想单击任何按钮,在文本字段中输入值并按“Enter”后,我想导航到下一个视图。为此,我创建了 clientListener 和 serverListener 并能够调用 serverListener 方法并实现了流程两种方式导航
1)调用如下链接中所述的导航处理程序:http: //adfpractice-fedor.blogspot.in/2012/02/handling-key-modifiers-for-client.html
public void checkEnterEvent(ClientEvent clientEvent) {
HandleNavigation(clientEvent.getParameters().get("fvalue").toString());<-- passing parameter here
// HandleNavigation("admin"); <--even i hardcoded here for once
}
private void HandleNavigation(String outcome) {
System.out.println("IN HandleNavigation");
FacesContext context = FacesContext.getCurrentInstance();
NavigationHandler nh = context.getApplication().getNavigationHandler();
System.out.println(outcome);
nh.handleNavigation(context, null, outcome);
}
它不起作用,而且这个解决方案绕过了 jsf 生命周期,所以我实现了这个:
2)第二种方式:
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();
}
其中“cb6”是 jspx 文件中的命令按钮 ID
<af:commandButton text="submit" action="check" id="cb6" visible="false">
但它们都不起作用。
有人可以告诉我的代码有什么问题吗?