Kotlin项目中如何在Thymeleaf中获取枚举值?
问题修复方案
1. 先修正Thymeleaf表达式的语法错误
你的表达式末尾多了一个多余的右括号,这是导致解析失败的直接原因。另外,如果你要显示的是枚举中定义的displayValue(即"username"),还需要显式访问该属性。
正确的Thymeleaf代码如下:
<p>Login User:<span th:text="${T(com.project.example.authapp.types.SessionEnum).USERNAME.displayValue}"></span></p>
2. 关键细节说明
- 语法修正:原表达式
${T(...)USERNAME)}里的末尾)是多余的,必须删除,否则Thymeleaf无法正确解析类型引用。 - 获取目标值:直接访问
USERNAME得到的是枚举实例本身,Kotlin枚举默认的toString()输出是枚举常量名(即"USERNAME"),而你需要的是构造时传入的displayValue,因此必须通过.displayValue来访问该属性。
3. 更简洁的替代方案(推荐)
如果不想在前端写冗长的全限定类名,可以在后端将枚举实例放入Model中:
@GetMapping("/your-page-path") fun getPage(model: Model): String { model.addAttribute("usernameEnum", SessionEnum.USERNAME) return "your-template-name" }
然后前端直接引用Model中的属性:
<p>Login User:<span th:text="${usernameEnum.displayValue}"></span></p>
内容的提问来源于stack exchange,提问作者sagisaka3301
相关产品推荐
相关产品推荐

