jsf - 如何测试 JSF 中的枚举相等性?

标签 jsf enums el

是否可以在 JSF 中测试枚举相等性?

例如其中 stuff 是一个 enum Stuff:

<h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>

最佳答案

这实际上与 EL 相关,而不是与 Faces 相关。您发布的构造是有效的,但您应该记住,枚举值在 EL 2.1 或更早版本中实际评估为 String值(value)观。如果String.valueOf(mrBean.getStuff())等于 String.valueOf(mrsBean.getStuff()) ,然后您的代码示例将呈现。在 EL 2.2 或更高版本中,相同的构造将起作用,但它们被评估为真正的枚举。

请注意,它确实需要一个 getter 方法来返回枚举值。鉴于枚举被视为 String ,本质上你也可以这样做:

<h:outputText value="text" rendered="#{mrBean.stuff == 'FOO'}" />

在 EL 中,您无法直接访问枚举值,如下所示:

<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />

这仅在您使用 Faces 2.3 引入的 <f:importConstants> 时才可能实现。标签:

<f:metadata>
    <f:importConstants type="com.example.Stuff" />
</f:metadata>
...
<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />

或者当您尚未使用 Faces 2.3 或当您不想使用 <f:metadata> 时,使用 OmniFaces 前身 <o:importConstants> :

<o:importConstants type="com.example.Stuff" />
...
<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />

关于jsf - 如何测试 JSF 中的枚举相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524420/

相关文章:

Jsf文件下载不起作用

c - 需要帮助理解枚举和数组

java - Eclipse 剪贴簿中的枚举

jsp - 为什么jsp会触发PropertyNotFound?

jsf - 未找到 ManagedBean 属性

java - Netbeans 报告 "no library found for namespace"来自 Maven 的 PrimeFaces 标签

实体的 JSF 表单 -- 热编辑?

jsf - Primefaces InputMask 可选数字

java - 枚举性能中的单例

css - Vue JS 2 表格标题随内容水平滚动但不垂直滚动