EL 表达式中的 OR 条件如何?

Posted

技术标签:

【中文标题】EL 表达式中的 OR 条件如何?【英文标题】:How do an OR condition in a EL expression? 【发布时间】:2011-12-25 20:20:04 【问题描述】:

我想在这个菜单中做一个 OR 条件:

<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.xthmlpartnerships.xhtml 页面,则“活动”值将在&lt;li&gt; 标记中设置。

【问题讨论】:

【参考方案1】:

这是正确的语法:

<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 别名为 &lt;c:set&gt;

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

【讨论】:

以上是关于EL 表达式中的 OR 条件如何?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++11 中使用 Lambda 表达式

java中EL表达式怎么用

EL表达式的作用与限制条件

EL表达式中如何隔行变色

如何比较EL表达式语言中的两个对象变量?

如何将servlet中的变量在jsp页面中显示---jsp中的EL表达式