如何以编程方式处理jsf2中支持bean的导航

时间:2012-10-20 16:44:46

标签: jsf-2

我希望能够在以下方面做点什么:

 @ManagedBean
 class MyBackingBean {
     public void processRequest() {
         String viewName;
         if (condition1) 
             viewName = "page1";
         else if (condition2) 
             viewName = "pagexx";     

         invokeAndRenderXHTML(viewName);
     }
 }

感谢

3 个答案:

答案 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中执行此操作