Как проверить, существует ли случай навигации JSF при отображении страницы - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть шаблон, который я хочу использовать для нескольких своих страниц.Все они имеют общий внешний вид, когда они делятся меню, которое позволяет им войти в систему и перейти на домашнюю страницу.Проблема связана с домашней страницей:

  1. Если существует index (index.xhtml), локальный по отношению к текущей странице (не шаблону), используйте его по умолчанию.Когда мой шаблон вызывается из /tools/page (/tools/page.xhtml), он будет указывать на /tools/index (/tools/index.xthml).С относительным путем я могу сбросить /tools.
  2. Отступить к /index (/index.xhtml).

Пример:

<p:menubar>
  <p:menuitem icon="fa fa-home" outcome="/index" value="Home" 
    rendered="#{not outcomeExists('index')}" />
  <p:menuitem icon="fa fa-home" outcome="index" value="Home"
    rendered="#{outcomeExists('index')}" />
  <p:menuitem icon="fa fa-user" value="#{login.name}"/>
</p:menubar>

Конечно, я хочу перевести настоящие правила навигации JSF для тестирования, если он существует или нет, поэтому он будет автоматически искать index.xhtml, index.jsf и т. Д.

1 Ответ

0 голосов
/ 24 декабря 2018

Я пытался - и пришел к этому решению, где нужно представить следующий метод для компонента CDI, используемого на моей странице JSF:

public boolean outcomeExists(String outcome) {
  FacesContext ctx = FacesContext.getCurrentInstance();
  ConfigurableNavigationHandler configNavHandler = (ConfigurableNavigationHandler)ctx.getApplication().getNavigationHandler();  
  NavigationCase navCase = configNavHandler.getNavigationCase(ctx,null,outcome);
  return navCase != null && navCase.getToViewId(ctx) != null; // the <to-view-id>
}

Это было адаптировано из - Программно получить навигациюделоиз лица-config.xml по результату

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...