1

我有这种情况,我必须从托管 bean 访问整个面孔配置。更具体地说,我需要访问在 faces-config 中指定的导航案例列表并循环浏览它们。有没有办法得到它们?

我看到NavigationCase有一些很好的方法可以揭示一些有用的信息.. 现在的问题是,如何获取这些 NavigationCase 的列表

4

2 回答 2

1

根据您在问题中指定的标签,我可以说您正在使用 JSF 2,因此您可以使用ConfigurableNavigationHandler来获取您要查找的内容。

使用ConfigurableNavigationHandler#getNavigationCases()获取导航案例,您可以从它的JavadocsMap获取有关该方法的更多信息:

返回一个Map<String, Set<NavigationCase>>,其中键是值,值是 Set,其中 Set 中的每个元素都是适用于 that 的 NavigationCase。

这是调用该方法的示例:

FacesContext context = FacesContext.getCurrentInstance();
ConfigurableNavigationHandler navigationHandler = (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
Map<String,Set<NavigationCase>> navigationCases = navigationHandler.getNavigationCases();

如果您已经知道要导航到的页面的名称,则可以简单地使用该示例(假设您的页面文件是 next.xhtml):

FacesContext context = FacesContext.getCurrentInstance();
ConfigurableNavigationHandler navigationHandler= (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
navigationHandler.performNavigation("next");

也可以看看:

于 2015-02-08T20:08:04.930 回答
0

试试这个代码:

FacesContext ctxt = FacesContext.getCurrentInstance();
ConfigurableNavigationHandler configNavHandler = (ConfigurableNavigationHandler)ctxt.getApplication().getNavigationHandler();
NavigationCase navCase = configNavHandler.getNavigationCase(ctxt,null,"Page");
String toViewId = navCase.getToViewId(ctxt);
于 2015-05-27T16:28:43.427 回答