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 () найдена и выполнена таким образом. Итак, почему у меня есть это исключение?

0 ответов

Другие вопросы по тегам