如何测试在呈现页面期间是否存在 JSF 导航事例



>我基本上有一个模板,我想在我的几个页面上重复使用。它们都有一个共同的外观和感觉,他们共享一个菜单,允许他们登录并导航到主页。问题出在主页上:

  1. 当当前页面(不是模板)存在本地indexindex.xhtml)时,则将其用作默认值。当我的模板从 /tools/page/tools/page.xhtml ) 调用时,它将指向 /tools/index/tools/index.xthml )。使用相对路径,我可以删除/tools.
  2. 回退到/index/index.xhtml)。

例:

<p:menubar>
  <p:menuitem icon="fa fa-home" outcome="/index" value="Home" 
    rendered="#{not outcomeExists('index')}" />
  <p:menuitem icon="fa fa-home" outcome="index" value="Home"
    rendered="#{outcomeExists('index')}" />
  <p:menuitem icon="fa fa-user" value="#{login.name}"/>
</p:menubar>

当然,我想翻译真正的JSF导航规则来测试它是否存在,所以它会自动查找index.xhtml index.jsf等。

我一直

在尝试 - 并得出了这个解决方案,必须在我的 JSF 页面中使用的 CDI Bean 上公开以下方法:

public boolean outcomeExists(String outcome) {
  FacesContext ctx = FacesContext.getCurrentInstance();
  ConfigurableNavigationHandler configNavHandler = (ConfigurableNavigationHandler)ctx.getApplication().getNavigationHandler();  
  NavigationCase navCase = configNavHandler.getNavigationCase(ctx,null,outcome);
  return navCase != null && navCase.getToViewId(ctx) != null; // the <to-view-id>
}

这改编自 - 以编程方式从人脸配置获取导航案例<到视图 id=">.xml按结果

相关内容

  • 没有找到相关文章

最新更新