Динамический вызов messages.properties с переменной модели контроллера и Thymeleaf - PullRequest
1 голос
/ 10 апреля 2020

У меня есть 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}, я получаю ' регионов и тд. Можно ли динамически вызывать сообщения из messages.properties, используя переменную модели, подобную этой?

Спасибо.

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать #messages служебный объект для этого:

<a th:text="${#messages.msg('tablas.menu.' + menu.nombre)}" />

Или вы можете создать строку, используя буквенное замещение :

<a th:text="#{|tablas.menu.${menu.nombre}|}" />

Я бы рекомендовал использовать предварительную обработку только в качестве крайней меры, так как неправильные значения могут вызвать ошибки во время выполнения. (Хотя они работают для этого.)

...