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 です。次に、別のビューを開き、現在のビュー ID を navigatiobean 内で選択されているように設定します。
@PostConstruct
private void init (){
navigation.setSelectedTopMenu(getViewId());
}
問題は、手遅れです。ページは既にレンダリングされており、ビュー ID が選択されていません。
このアプローチはまったく良くありませんか?ベストプラクティスはありますか? JSF メニューと JSF ナビゲーションを検索すると、別の問題が発生するため、何も見つかりませんでした。
前もって感謝します!