使用控制器模型变量和 Thymeleaf 动态调用 messages.properties
Calling messages.properties dynamically with controller model variable and Thymeleaf
我的 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>
对于每个 "menu in ${menus}",menu.nombre 具有值 paises、regiones、anhos...
但是 thymeleaf 不识别 #{} 中的模型变量,当它找不到消息时,它在视图中给我这个错误:
??tablas.menu.${menu.nombre}_es_ES??
配置没问题,如果我更改 #{tablas.menu.regiones} 的调用,我会得到 'regiones' 等等。
有什么方法可以使用这样的模型变量从 messages.properties 动态调用消息?
谢谢。
您可以为此使用 #messages
utility object:
<a th:text="${#messages.msg('tablas.menu.' + menu.nombre)}" />
或者您可以使用 literal substitution:
创建字符串
<a th:text="#{|tablas.menu.${menu.nombre}|}" />
我建议仅将预处理作为最后的手段使用,因为错误的值会导致运行时错误。 (尽管他们确实为此工作。)
我的 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>
对于每个 "menu in ${menus}",menu.nombre 具有值 paises、regiones、anhos... 但是 thymeleaf 不识别 #{} 中的模型变量,当它找不到消息时,它在视图中给我这个错误:
??tablas.menu.${menu.nombre}_es_ES??
配置没问题,如果我更改 #{tablas.menu.regiones} 的调用,我会得到 'regiones' 等等。 有什么方法可以使用这样的模型变量从 messages.properties 动态调用消息?
谢谢。
您可以为此使用 #messages
utility object:
<a th:text="${#messages.msg('tablas.menu.' + menu.nombre)}" />
或者您可以使用 literal substitution:
创建字符串<a th:text="#{|tablas.menu.${menu.nombre}|}" />
我建议仅将预处理作为最后的手段使用,因为错误的值会导致运行时错误。 (尽管他们确实为此工作。)