嵌套条件运算符解释为String

时间:2014-06-25 09:55:28

标签: jsf el conditional-operator

在我的Java EE 7 / JSF / EL 3.0项目中,我需要根据条件定义标记的样式类:

  • 如果x < a,那么该课程为LT-A
  • 如果x > b,则为BT-B
  • 其他类是BETWEEN-A-B

我能找到的唯一解决方案是使用嵌套的条件运算符:

styleClass="#{x<a ? 'LT-A' : (x>b ? 'BT-B' : 'BETWEEN-A-B')}"

但是,我的问题是(x>b ? 'BT-B' : 'BETWEEN-A-B')部分被解释为String(因此按原样呈现而不是实际评估)。

语法有问题吗?

1 个答案:

答案 0 :(得分:4)

<>被误解了。如果您使用ltgt,一切都应该可以正常使用。

以下是EL逻辑运算符的完整列表:


and - 逻辑运营商替代(&amp;&amp;)

false - 布尔文字

le - 关系运算符小于或等于(&lt; =)的替代

not - 逻辑运算符反向替代(!)

div - 算术运算符除(/)

之外的部门

ge - 关系运算符大于或等于(&gt; =)的替代

lt - 关系运算符少于(&lt;)的替代

null - 空文字

empty - 空运算符是一个前缀操作,可用于确定值是空还是空。

gt - 关系运算符大于(&gt;)的替代

mod - 算术运算符模数替代(%)

or - 逻辑运算符替代(||)

eq - 逻辑运算符替代(==)

instanceof - 用于在对象之间进行类比较的Java关键字

ne - 关系运算符不等于(!=)

true - 布尔文字


javaevangelist.blogspot.co.at提供