В моем бэкэнд-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: noenum const CountryCodes.CHN определены.
Я должен справиться с этой ситуацией, потому что база данных хранит старые данные, которые не проверены и могут содержать недопустимое значение.
Так есть ли способ сравнения просто вернуть false, когда CURRENT_INSTITUTION.countryCode
не является одним из значения перечисления?Или есть способ определить, является ли CURRENT_INSTITUION.countryCode
одним из значений перечисления или нет, чтобы я мог предпринять соответствующие действия на основе этого?