Как управлять меню боковой панели при переходе между страницами в JSF? - PullRequest
0 голосов
/ 16 апреля 2019

Я использую пользовательский шаблон с боковой панелью: у меня есть 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 ? Как? Есть ли лучший способ поддерживать нестандартные «хлебные крошки»?

Большое спасибо!

...