Программно установить элемент активного меню адаптивных тем PrimeFaces - PullRequest
1 голос
/ 27 мая 2020

Мы используем одну из новых адаптивных тем PrimeFaces 8 ( Mirage , если это важно). Я реализовал меню Dynami c для создания меню моей страницы. В зависимости от нескольких параметров целевая страница может быть разной. Пример: Предположим, что существует коммуникационная среда, в которой пункты меню:

  • Документы (открывается по умолчанию)
  • Электронная почта
  • Изображения

При входе в коммуникационную среду приложение проверяет, есть ли новые электронные письма. В этом случае пользователь перейдет не на страницу «Документы», а на страницу «Электронная почта».

Тема использует файлы cookie для восстановления состояния меню на основе того, что пользователь выбрал ранее. Итак, предположим, что в прошлый раз он (а) выбирал «Картинки», в результате теперь пункт меню «Картинки» отмечен как active-menuitem, но отображаемая страница - «Электронная почта».

Я был уже могу очистить файлы cookie, чтобы ни один пункт меню не был активен, но теперь я пытаюсь активировать правильный пункт меню. Я добился наибольшего успеха, позвонив по номеру

PF('sidebarMenu').activate($('.custom-active-menuitem').closest('li'));
PF('sidebarMenu').activate($('.custom-active-menuitem').closest('ul').closest('li'));

, но поскольку страница перестраивается с использованием ajax, это работает только один раз ?. Использование встроенного .active-menuitem не работает, поэтому я ввел .custom-active-menuitem, который я установил в коде Java:

DefaultMenuItem.builder()
               .value("E-mail")
               .icon("fa fa-letter")
               .command("#{communicationBean.openEmailPage()}")
               .styleClass("custom-active-menuitem") // or something else to mark this item active
               .process("@this")
               .update(":page");

Так что теперь я озадачен. Может кто-нибудь направить меня в правильном направлении? Как сделать так, чтобы в теме отображался пункт меню, который я выбрал как активный?

...