当前位置: 首页 > 面试题库 >

与JSTL中的枚举值比较

幸鸿轩
2023-03-14
问题内容

我的后端Java代码中包含以下枚举:

public static enum CountryCodes implements EnumConstant {
                   USA, CAN, AUS;}

在jsp中,我试图遍历枚举值并进行比较:

<c:set var="countryCodes" value="<%=RequestConstants.CountryCodes.values()%>" />
<td><select>
   <c:forEach items="${countryCodes}" var="countryCode">
      <c:choose>
         <c:when test="${CURRENT_INSTITUTION.countryCode == countryCode}">
            <option value="${countryCode}" selected="selected">${countryCode}</option>
         </c:when>
         <c:otherwise>
            <option value="${countryCode}">${countryCode}</option>
         </c:otherwise>
      </c:choose>
   </c:forEach>
</select></td>

但是,问题在于,它CURRENT_INSTITUTION.countryCode是从数据库读取的,可能不是枚举值之一。

如果CURRENT_INSTITUTION.countryCodeis是枚举值以外的值(例如CHN),则比较将引发以下异常:

java.lang.IllegalArgumentException:未定义枚举const CountryCodes.CHN。

我必须应付这种情况,因为数据库存储的是旧数据,该数据未经健全性检查,并且可能包含无效值。

那么有没有一种方法可以在CURRENT_INSTITUTION.countryCode不属于枚举值之一的情况下只返回false
?还是有办法确定是否CURRENT_INSTITUION.countryCode为枚举值之一,以便我可以据此采取适当的措施?


问题答案:

在枚举中定义一个返回名称的getter:

public String getName() {
    return name();
}

然后,您可以比较字符串。

如果您的EL版本支持方法调用,则可以跳过getter并使用 countryCode.name()



 类似资料:
  • 实现后缀计算器,需要检查运算符的优先级是否低于另一个运算符。以下是我到目前为止所拥有的: 我尝试了许多不同的方法来检查传入的字符的优先级,但都没有用。有没有简单的方法来比较一个枚举的两个值?我需要创建一个循环吗?

  • 问题内容: 有没有办法检查一个枚举值是否大于或等于另一个值? 我想检查错误级别是否为“错误或以上”。 问题答案: 所有Java枚举都实现可比较:http : //java.sun.com/javase/6/docs/api/java/lang/Enum.html 您也可以使用该方法将它们转换为s,然后比较就很简单了。

  • 因为枚举成员不是有序的,所以它们只支持通过标识(identity) 和相等性 (equality) 进行比较。下面来看看 == 和 is 的使用: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum class User(Enum): Twowater = 98 Liangdianshui

  • 问题内容: 我有一个枚举的类对象(我有一个),我需要获取此枚举表示的枚举值的列表。该静态函数有我需要什么,但我不知道怎么去从类对象访问它。 问题答案:

  • 枚举具有名为'hash value'的属性,该属性是枚举内的索引。

  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这

  • 问题内容: 给出测试代码: 我想检查两个给定的枚举是否包含相同的值。 也许有更优雅的方式做到这一点? 问题答案: 建立一组名称: 为此(考虑将以上内容提取到方法中)。 然后:

  • 问题内容: 以前,我将LegNo枚举定义为: 通过调用,我可以获得与每个枚举关联的值。 但是现在我决定让枚举是int -1而不是0,所以我决定使用私有构造函数进行初始化并设置其int值 现在唯一的事情就是因为我这样做,所以该方法不适用于枚举。我如何获得与int相关联的枚举?除了使用case switch语句或if-elseif-elseif之外,还有其他有效的方法吗? 我可以看到很多与从枚举获取i