我有这种情况,我必须从托管bean访问整个面部配置。更具体地说,我需要访问在faces-config中指定的导航案例列表并循环遍历它们。 有什么办法让他们?如何从Java类访问faces配置的导航案例
我看到NavigationCase有透露一些有用的信息。问题是现在,如何让基于你已经在你的问题中指定的标签,这些NavigationCase
我有这种情况,我必须从托管bean访问整个面部配置。更具体地说,我需要访问在faces-config中指定的导航案例列表并循环遍历它们。 有什么办法让他们?如何从Java类访问faces配置的导航案例
我看到NavigationCase有透露一些有用的信息。问题是现在,如何让基于你已经在你的问题中指定的标签,这些NavigationCase
名单,我可以说,一些好的方法您正在使用JSF 2,因此您可以使用ConfigurableNavigationHandler
来获取您要查找的内容。
使用ConfigurableNavigationHandler#getNavigationCases()
得到的导航案件Map
,你可以得到更多的信息有关方法从它的Javadocs:
返回
Map<String, Set<NavigationCase>>
密钥是 值和值设置在那里 各Set中的元素是一个适用于该 的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");
参见:
试试这个代码:
FacesContext ctxt = FacesContext.getCurrentInstance();
ConfigurableNavigationHandler configNavHandler = (ConfigurableNavigationHandler)ctxt.getApplication().getNavigationHandler();
NavigationCase navCase = configNavHandler.getNavigationCase(ctxt,null,"Page");
String toViewId = navCase.getToViewId(ctxt);