2

我希望能够做一些类似的事情:

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

         invokeAndRenderXHTML(viewName);
     }
 }

谢谢

4

3 回答 3

9

以防万一有人偶然发现这个老问题:您可以像这样以编程方式调用导航处理程序

FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, "YOUR_NAVIGATION_CASE_DEFINED_IN_FACES_CONFIG");
于 2013-05-10T11:06:02.623 回答
1

JSF 默认提供程序化导航。您不需要第三方库来实现导航。要使用 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执行重定向魔术的参数

于 2012-10-21T17:34:03.680 回答
-1

因为您需要一个请求来触发响应,所以我认为有两种方法可以走。轮询或推送。

www.primefaces.org/showcase/ui/poll.jsf

www.primefaces.org/showcase/push/index.jsf

查看两者的 primefaces 展示,了解哪个最适合您的需求。即使您不使用该库,您也可以查看源代码以更好地了解如何在 jsf2 中执行此操作

于 2012-10-20T18:24:35.537 回答