Мы используем одну из новых адаптивных тем 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");
Так что теперь я озадачен. Может кто-нибудь направить меня в правильном направлении? Как сделать так, чтобы в теме отображался пункт меню, который я выбрал как активный?