2017-01-24 2 views
0

Я создал фрагмент Тимелеафа, который я включаю во все вид-состояния виды моего потока.Как получить доступ к значению встроенной карты через значение enum в SpEL?

<th:block th:fragment="flow-messages" 
    th:with="alertTypes = ${ {'INFO':'alert-info','ERROR':'alert-error','WARNING':'alert-warning'} }"> 
    <div 
     class="alert" 
     th:each="message: ${flowRequestContext.messageContext.allMessages}" 
     th:classappend="${alertTypes.get(message.severity)}"> 
     <p th:text="${message.text}">Message text</p> 
    </div> 
</th:block> 

Как вы можете видеть выше, я инициализировать карту с уровнем серьезности (org.springframework.binding.message.Severity) и связанным с самозагрузкой классом.

Проблема в том, что alertTypes.get (message.severity) не работает (возвращает пустое значение). И я не могу добавить соответствующий класс.

Кто-нибудь знает, как я могу это исправить ?.

+0

is alertTypes перечисление на ваш проект? можете ли вы опубликовать код? – rptmat57

+0

alertTypes определяется на th: with. th: with = "alertTypes = $ {{'INFO': 'alert-info', 'ERROR': 'alert-error', 'WARNING': 'alert-warning'}}" –

+0

@ SergioSánchezSánchez вы проверили значение of message.severity правильно? Я проверил, что карта работает правильно, btw - это предупреждение-опасность, а не ошибка. – cralfaro

ответ

1

Попробуйте th:classappend="${alertTypes.get(message.severity.toString())}" вместо th:classappend="${alertTypes.get(message.severity)}".

В строковой карте, которую вы создали, есть строки для ее ключей (а не перечисления типа Severity) - так что вызов get() с значением Enum не будет соответствовать.

+0

, эта работа прекрасна, но мне также пришлось удалить одинарные кавычки «INFO» -> INFO –

Смежные вопросы