Присвойте возвращаемое значение выражения диалекта Thymeleaf переменной Thymeleaf в th: with - PullRequest
1 голос
/ 15 мая 2019

Я отчаянно пытаюсь присвоить возвращаемое значение выражения диалекта Thymeleaf переменной Thymeleaf в атрибуте th:with.

Я хочу добиться чего-то вроде:

<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}" />

Примечание:Я полностью уверен, что мое выражение #lists.contains работает, так как я напечатал возвращаемое значение в теге h1 и возвращает true в виде текста:

<h1 th:text="${#lists.contains(modelList, modelVariable)}"></h1>

До сих пор я пробовалследующие синтаксисы, все они дают мне ошибку синтаксического анализа, так или иначе ...

Без внешнего ${}:

<th:block th:with="foo=#lists.contains(modelList, modelVariable)" />

С предварительной обработкой:

<th:block th:with="foo=${__#lists.contains(modelList, modelVariable)__}" />

С предварительной обработкой и упаковкой в ​​${}:

<th:block th:with="foo=${__${#lists.contains(modelList, modelVariable)}__}" />

Почему работает любое из этих выражений?

Я что-то не так делаю или это ошибка / невозможность выражения Thymeleaf th:with?

Спасибо.

1 Ответ

1 голос
/ 15 мая 2019

В самом выражении th:with нет ничего плохого. Однако переменные, созданные с использованием th:with, применяются только к дочерним тегам. Ваш th:block немедленно закрывается, поэтому foo сразу выходит из области видимости, и ничто не может получить к нему доступ. Например, это будет работать:

<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}">
    <div th:text="${foo}" />
</th:block>

Но это не так:

<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}" />
<div th:text="${foo}" />        

Нет способа определить глобальную переменную, подобную этой (кроме добавления тега <html />, я полагаю).

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