我希望能够在以下方面做点什么:
@ManagedBean
class MyBackingBean {
public void processRequest() {
String viewName;
if (condition1)
viewName = "page1";
else if (condition2)
viewName = "pagexx";
invokeAndRenderXHTML(viewName);
}
}
感谢
答案 0 :(得分:9)
万一有人偶然发现这个老问题: 你可以以编程方式调用这样的导航处理程序
FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, "YOUR_NAVIGATION_CASE_DEFINED_IN_FACES_CONFIG");
答案 1 :(得分:1)
JSF默认提供编程导航。您 NOT 需要第三方库来实现导航。要使用JSF导航,您的方法应该只返回您尝试访问的视图的名称,然后它将导航到该页面。您还可以在返回值中包含可选的redirect
参数,以指示JSF上下文将响应完全重定向到目标视图。根据您的需要,只需将processRequest
更改为
public String processRequest() {
// String viewName unnecessary
if (condition1) {
return "page1";
}
else if (condition2) {
return = "pagexx";
}
return null;
// invokeAndRenderXHTML(viewName) becomes unnecessary
}
如果您选择像我上面指出的redirect
选项,只需将返回字符串更改为
return "page1?faces-redirect=true"
faces-redirect=true
是执行重定向魔术的参数
答案 2 :(得分:-1)
因为您需要触发响应的请求我认为有两种方法可以实现。无论是轮询还是推动。
www.primefaces.org/showcase/ui/poll.jsf
www.primefaces.org/showcase/push/index.jsf
查看两个方面的主要展示,以了解哪些最适合您的需求。即使您不使用该库,您也可以查看源代码以更好地了解如何在jsf2中执行此操作