で列挙型の値と比較:は、私は私のバックエンドのJavaコードでfollwoing列挙型を持つJSTL
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
がデータベースから読み込まれ、enum値の1つではない可能性があることです。
CURRENT_INSTITUTION.countryCode
がenum値以外の値、(CHN
言う)である場合、比較は、以下の例外をスロー:
java.lang.IllegalArgumentExceptionが:CountryCodes.CHNが定義されていない列挙CONST。
データベースには正常性チェックされていない無効な値が含まれている古いデータが格納されているため、この状況に対処する必要があります。
したがって、CURRENT_INSTITUTION.countryCode
が列挙型の値ではない場合、比較のための方法はfalseを返しますか?または、CURRENT_INSTITUION.countryCode
がenum値の1つであるかどうかを判断する方法があるので、それに基づいて適切な処置を取ることができますか?そして、あなたは文字列を比較することができます
public String getName() {
return name();
}
:
'EnumConstant'は何を使用することができますか? – skaffman