Spring SpEL: исключение при использовании функции T() для загрузки Enum в выпадающий список
Я ищу способ загрузить перечисление в выпадающий список (я использую JSTL), не помещая его в атрибут модели. По этой причине я использую SPEL, и я нашел другой пример для его использования. Я пытаюсь с этим решением
<form:select path="status">
<option class="" value=""><s:message code="optLabel" /></option>
<c:forEach var="enum" items="${T(com.mypackage.enums.Status).values()}">
<option>...</option>
</c:forEach>
</form:select>
и с этим решением
<select>
<option th:each="elem: ${T(com.mypackage.enums.Status).values()}" th:value="${elem.val()}" th:text="#{elem.val()}" value="BAZ">BAZ</option>
</select>
но у меня есть это исключение во время выполнения "Функция T должна использоваться с префиксом, когда пространство имен по умолчанию не указано"
Что я должен делать?
Это enum класс:
public enum Status {
VALID("valid"), OLD("old");
private final String val;
Status(String val) {
this.val = val;
}
public String getVal() {
return val;
}
}
Еще одно уточнение.. если я напишу
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
...
<s:eval expression="T(com.mypackage.enums.Status).VALID == T(com.mypackage.enums.Status).VALID" var="isValid" />
<c:if test="${isValid}">
isValid
</c:if>
Это отлично работает! Это заставляет меня думать, что функция T () найдена и выполнена таким образом. Итак, почему у меня есть это исключение?