gpt4 book ai didi

jsp - 与 JSTL 中的枚举值比较

转载 作者:行者123 更新时间:2023-12-01 07:30:07 27 4
gpt4 key购买 nike

我的后端 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.countryCode是枚举值以外的值(比如 CHN ),那么比较会抛出以下异常:

java.lang.IllegalArgumentException: no enum const CountryCodes.CHN defined.



我必须应对这种情况,因为数据库存储的是旧数据,这些数据没有经过完整性检查并且可能包含无效值。

那么有没有办法让比较在 CURRENT_INSTITUTION.countryCode 时只返回 false是不是枚举值之一?或者有没有办法判断是否 CURRENT_INSTITUION.countryCode是否是枚举值之一,以便我可以基于此采取适当的措施?

最佳答案

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

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

然后你可以比较字符串。

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

关于jsp - 与 JSTL 中的枚举值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749908/

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