Thymeleaf: динамическое построение имен переменных - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь построить имя переменной динамически, конкатенируя значение переменной и добавляя некоторую строку впоследствии, когда я добавляю эти переменные во время выполнения. Должно работать что-то вроде следующего, но это не так.

th:text="${__#{myClass.getA().getB()}+'-result'__}"

Это вообще возможно сделать? Я не знаю имя переменной, но, к сожалению, могу только построить ее.

1 Ответ

0 голосов
/ 02 апреля 2019

Да, это возможно, Thymeleaf поддерживает предварительную обработку выражений:

Давайте начнем с нескольких примеров: ссылки на выражения (i18n) должны ссылаться с использованием символа #.Итак, предположим, у вас есть message.key в вашем файле перевода.Чтобы ссылаться на него в Thymeleaf, вам нужно будет использовать

th:text="#{message.key}"

. В вашем сценарии имя вашего ключа генерируется динамически на основе переменной, поэтому для предварительной обработки его в тимелисте вам необходимо использовать два подчеркивания __

* 1007.* Давайте предположим, что в вашем контексте у вас есть переменная модели myModelVariable с методом messagePrefix ().Наш пример выглядит следующим образом:
th:text="#{__${myModelVariable.messagePrefix()}__}"

Это означает, что myModelVariable.messagePrefix () будет обработан первым, а результат будет использован в качестве имени ключа, который затем будет преобразован в удобное для пользователя сообщение.

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

th:text="#{__${myModelVariable.messagePrefix()}__}+'*'"

Даже ключ может содержать статическую часть, поэтому это также принимается:

th:text="#{__${myModelVariable.messagePrefix()}__.staticsuffix}+'*'"

Более подробную информацию вы можете найти в разделе 2.7 здесь: https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...