Я ищу лучшую практику работы с простым меню с помощью JSF и CDI.
Я бы хотел иметь главное меню с динамическими записями. Что-то вроде (из основного шаблона):
<ul>
<c:forEach var="menuItem" items="#{navigationBean.topMenuItems}">
<c:choose>
<c:when test="#{navigationBean.isSelectedTop(menuItem.name)}">
<li class="current_page_item"><h:outputLink value="#{menuItem.url}"><h:outputText value="#{menuItem.name}" /></h:outputLink></li>
</c:when>
<c:otherwise>
<li><h:outputLink value="#{menuItem.url}"><h:outputText value="#{menuItem.name}" /></h:outputLink></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
NavigationBean (Sessionscoped и содержит список NavigationItems) и NavigationItem являются только bean-компонентами. Затем, открывая другой вид, я устанавливаю идентификатор текущего вида, выбранный в navatiobean:
@PostConstruct
private void init (){
navigation.setSelectedTopMenu(getViewId());
}
Проблема в том, что уже слишком поздно. Страница уже обработана, и идентификатор представления не выбран.
Разве этот подход не хорош вообще? Есть ли лучшие практики? Поиск меню JSF и навигация JSF приводят к другим проблемам, поэтому я ничего не смог найти.
Заранее спасибо!