使用控制器模型变量和Thymeleaf动态调用messages.properties

问题描述 投票:1回答:1

我有这样的messages.properties

tablas.menu.paises=Pa\u00EDses
tablas.menu.regiones=Regiones
tablas.menu.anhos=A\u00F1os
tablas.menu.universidades=Universidades
tablas.menu.usuarios=Usuarios

。html中,我有一个菜单,其中显示每个项目的th:each:

<li class="nav-item" th:each="menu : ${menus}">
  <a th:text="#{tablas.menu.${menu.nombre}}"></a>
</li>

对于每个“ $ {menus}中的菜单”,menu.nombre具有值paises,regiones,anhos ...但是,百里香无法识别#{}中的模型变量,这在找不到消息时在视图中给了我错误:

??tablas.menu.${menu.nombre}_es_ES??

配置还可以,如果我更改对#{tablas.menu.regiones}的调用,则会得到“ regiones”,依此类推。有没有办法使用这样的模型变量从messages.properties动态调用消息?

谢谢。

spring-boot spring-mvc thymeleaf properties-file
1个回答
0
投票

您可以使用#messages utility object

#messages

或者您可以使用<a th:text="${#messages.msg('tablas.menu.' + menu.nombre)}" /> 创建字符串:

literal substitution

我建议仅将预处理作为最后的手段,因为错误的值可能会导致运行时错误。 (尽管他们确实为此工作。)

© www.soinside.com 2019 - 2024. All rights reserved.