Java JSF2动态菜单处理的最佳实践?

Java JSF2动态菜单处理的最佳实践?,java,jsf,menu,java-ee-6,cdi,Java,Jsf,Menu,Java Ee 6,Cdi,我正在寻找使用JSF和CDI处理简单菜单的最佳实践 我想有一个动态条目的顶部菜单。类似于(从主模板): 问题是,太晚了。页面已呈现,未选择视图id 这种方法一点都不好吗?有什么最佳实践吗?搜索JSF菜单和JSF导航会导致其他问题,所以我什么也找不到 提前谢谢 一种方法是在绑定方法中使用组件绑定(例如到h:panelGroup)和整个菜单生成 JSF页面: <h:panelGroup binding="navigationBean.navigationMenu" /> 我强烈建议不要

我正在寻找使用JSF和CDI处理简单菜单的最佳实践

我想有一个动态条目的顶部菜单。类似于(从主模板):

问题是,太晚了。页面已呈现,未选择视图id

这种方法一点都不好吗?有什么最佳实践吗?搜索JSF菜单和JSF导航会导致其他问题,所以我什么也找不到


提前谢谢

一种方法是在绑定方法中使用组件绑定(例如到h:panelGroup)和整个菜单生成

JSF页面:

<h:panelGroup binding="navigationBean.navigationMenu" />

我强烈建议不要在JSF2.0/Facelets中使用JSP标记库(c:)。这些标记不是JSF组件树的一部分——虽然有些标记可能在第一次页面呈现时起作用,但一旦刷新或(部分)重新呈现页面,就会遇到很多麻烦。在所描述的案例中,这也可能是您的问题。
@PostConstruct 
private void init (){

    navigation.setSelectedTopMenu(getViewId());
}
<h:panelGroup binding="navigationBean.navigationMenu" />
public HtmlPanelGroup getNavigationMenu() {
     HtmlPanelGroup menu = new HtmlPanelGroup();
     menu.setId("menu");
     HtmlOutputLink link = new HtmlOutputLink();
     // ... other components etc.
     menu.getChildren().add(link);
}