Я пытаюсь сделать какую-то разработку веб-сайта с помощью jstl, и я сталкиваюсь со следующей проблемой:
Здесь я пытаюсь создать раскрывающийся список, в котором отображаемое значение - это названия стран, а значение - этокод страны.Для этого у меня есть следующий enum в бэкэнд-коде Java:
public static enum CountryCodes implements EnumConstant {
USA, CAN, AUS, GBR, DEU, ESP, GUM, IND, ISR, MEX, NZL, PAN, PRI;
public final String toCountry(){
switch(this){
case USA:
return "United States";
case CAN:
return "Canada";
case AUS:
return "Australia";
case GBR:
return "Great Britan";
case DEU:
return "Germany";
case ESP:
return "Spain";
case GUM:
return "Guam";
case IND:
return "India";
case ISR:
return "Isreal";
case MEX:
return "Mexico";
case NZL:
return "New Zealand";
case PAN:
return "Panama";
case PRI:
return "Puerto Rico";
}
return this.toString();
}
}
И фрагмент кода jsp выглядит следующим образом:
<c:set var="countryCodes" value="<%=RequestConstants.CountryCodes.values()%>" />
<td>
<select id="<%=RequestConstants.CLModifyPage.COUNTRY_CODE%>"
name="<%=RequestConstants.CLModifyPage.COUNTRY_CODE%>">
<c:forEach items="${countryCodes}" var="countryCode">
<c:choose>
<c:when
test="${sessionScope.CURRENT_INSTITUTION.countryCode == countryCode}">
<option value="${countryCode}" selected="selected">
${countryCode.toCountry()}</option>
</c:when>
<c:otherwise>
<option value="${countryCode}">${countryCode.toCountry()}
</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</td>
Но в приведенном выше коде есть две проблемы:
countryCode.toCountry()
на самом деле не работает ... Я не уверен, какой это должен быть синтаксис.
, если "${sessionScope.CURRENT_INSTITUTION.countryCode}"
недопустимое значение перечисления, т. е. если это что-то вроде «AAA», то сравнение завершается неудачно и выдает исключение java.lang.IllegalArgumentException: перечисление enst const не определено.Как я могу обойти это?