Я использую пользовательский шаблон с боковой панелью: у меня есть 3 сгруппированных меню, которые можно открывать или закрывать. Я бы открывал меню только на определенных страницах.
Я попытался использовать NavigationController со свойством, которое позволяет мне понять, «где» мы сейчас, чтобы я мог открыть правильное меню.
@ManagedBean(eager = true)
@RequestScoped
public class NavigationController implements Serializable {
@ManagedProperty(value = "#{param.pageId}")
private String pageId;
public String showPage() {
switch(pageId) {
case "1": return "home";
case "21": return "cerca_a";
case "22": return "anagrafica?id_p=new&faces-redirect=true";
...
default: return "home";
}
}
//getter and setter
}
Используется в sideBar.xhtml как этот
<ul class="collapse list-unstyled #{navigationController.pageId lt 30? 'show':''}">
<li><h:commandLink action="#{navigationController.showPage}" value="Cerca">
<f:param name="pageId" value="31"/></h:commandLink></li>
...
</ul>
Не работает, когда я использую ссылки с параметрами (случай 22): меню не открывается, теряется # {navigationController.pageId}.
Я уверен, что это происходит, потому что это @ RequestScoped , и когда я вызываю anagrafica? Id_p = new, выполняется AnagConverter.
Должен ли я использовать @ ViewScoped ? Как? Есть ли лучший способ поддерживать нестандартные «хлебные крошки»?
Большое спасибо!