Как условие ИЛИ в выражении EL? - PullRequest
15 голосов
/ 10 ноября 2011

Я бы хотел сделать условие ИЛИ в этом меню:

<li class="#{facesContext.viewRoot.viewId == ('/company/team.xhtml' or '/company/partnerships.xhtml' ) ? 'active' : '' }"><a class="item" href="company/company.xhtml">Company</a>
    <ul>
        <li><a href="company/team.xhtml">Team</a></li>
        <li><a href="company/partnerships.xhtml">Partnerships</a></li>
    </ul>
</li>

Чтобы при выборе пользователем страницы team.xthml или partnerships.xhtml значение 'active' было установлено втег <li>.

1 Ответ

27 голосов
/ 10 ноября 2011

Это правильный синтаксис:

<li class="#{facesContext.viewRoot.viewId == '/company/team.xhtml' or facesContext.viewRoot.viewId == '/company/partnerships.xhtml' ? 'active' : '' }">

Чтобы сделать его немного короче, вы можете использовать #{view} вместо #{facesContext.viewRoot}:

<li class="#{view.viewId == '/company/team.xhtml' or view.viewId == '/company/partnerships.xhtml' ? 'active' : '' }">

Чтобы сделать его еще короче, вы можете использовать псевдоним #{view.viewId} с <c:set>:

<c:set var="viewId" value="#{view.viewId}" scope="request" />
...
<li class="#{viewId == '/company/team.xhtml' or viewId == '/company/partnerships.xhtml' ? 'active' : '' }">
...