Навигация JSF с другим классом CSS для текущего / активного пути - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь создать шаблон меню в JSF, в котором ссылка на текущий каталог имеет другой «текущий» или «активный» класс.Код в настоящее время выглядит так:

<ul>
    <li><h:outputLink value="#{request.contextPath}/a/">A</h:outputLink></li>
    <li><h:outputLink value="#{request.contextPath}/b/">B</h:outputLink></li>
    <li><h:outputLink value="#{request.contextPath}/c/">C</h:outputLink></li>
</ul>

Я подумываю использовать что-то вроде styleClass="#{(thisDir == currentDir) ? currentLinkClass : normalLinkClass}".Но как мне получить текущий путь?Это даже правильно, или есть лучший способ сделать это?

Кроме того, я хочу, чтобы ссылки основывались на текущем пути, а не только на странице.Например, myapp/a/1.jsf и myapp/a/2.jsf (то есть myapp/a/*.jsf) должны запускать активный класс для ссылки A.(Надеюсь, мое объяснение понятно.) Возможно ли это?Как это сделать?

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

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Вы можете использовать #{request.requestURI}, чтобы получить текущий URI запроса.При необходимости вы можете использовать несколько EL-функций из JSTL fn taglib , чтобы выполнить некоторые сравнения / манипуляции со строками в EL.

Предлагаемое вами предложение EL styleClass совершенно нормально.В любом случае нет другого легкого пути.Наилучшая оптимизация, которую вы могли бы сделать до сих пор, - визуализировать эти ссылки в цикле с помощью <ui:repeat>, чтобы по крайней мере исключить дублирование кода.

0 голосов
/ 24 марта 2014

Вы также можете попробовать этот подход, который использует #{view.viewId}:

<h:outputLink 
  styleClass="#{(view.viewId.equals('/admin/authors.xhtml')) ? 'active' : 'inactive'}"
  value="authors.xhtml">Text</h:outputLink>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...