如何测试JSF中的枚举平等? [英] How to testing for enum equality in JSF?

查看:76
本文介绍了如何测试JSF中的枚举平等?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以测试JSF中的枚举平等?

Is it possible to test for enum equality in JSF?

例如。其中东西是一个枚举Stuff

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


推荐答案

这实际上比JSF有更多的EL相关。您发布的构造是有效的,但您应该记住,EL 2.1中的枚举值实际上被评估为 String 值。如果 String.valueOf(mrBean.getStuff())等于 String.valueOf(mrsBean.getStuff())你的代码示例将呈现。在EL 2.2中,相同的结构将工作,但它们被评估为真枚举。

This is actually more EL related than JSF related. The construct as you posted is valid, but you should keep in mind that enum values are in EL 2.1 are actually evaluated as String values. If String.valueOf(mrBean.getStuff()) equals String.valueOf(mrsBean.getStuff()), then your code example will render. In EL 2.2 the same construct will work, but they are evaluated as true enums.

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

Note that it indeed requires a getter method to return the enum value. Given the fact that enums are treated as String, you can in essence also just do:

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

在目前的EL 2.2版本中,您无法直接访问枚举值:

In current EL 2.2 version, you cannot access enum values directly like this:

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

只有当您使用 OmniFaces < o:importConstants>

This is only possible when you use OmniFaces <o:importConstants>:

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

这篇关于如何测试JSF中的枚举平等?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆