如何通过 SpEL 中枚举的值访问内联映射的值?

How to access the value of inline map through the value of an enum in SpEL?

我创建了一个 Thymeleaf 片段,我将其包含在我流程的所有 视图状态 视图中。

<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) 和关联 bootstrap class.

的映射

问题是 alertTypes.get (message.severity) 不起作用(returns 一个空值)。而且我也没有办法添加对应的class.

有人知道我该如何解决这个问题吗?

尝试 th:classappend="${alertTypes.get(message.severity.toString())}" 而不是 th:classappend="${alertTypes.get(message.severity)}"

您创建的内联映射具有用于其键的字符串(而不是 Severity 类型的枚举)——因此使用枚举值调用 get() 将不匹配。