gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:06:42 26 4
gpt4 key购买 nike

是否可以在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com