Тимелеаф: проверьте, определена ли переменная

Как проверить, определена ли переменная в Thymeleaf?

Что-то вроде этого в Javascript:

if (typeof variable !== 'undefined') { }

или это в PHP:

if (isset($var)) { }

Существует ли эквивалент в тимелеафе?

Ответы

Ответ 1

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

<div th:if="${variable != null}" th:text="Yes, variable exists!">
   I wonder, if variable exists...
</div>

Если вы хотите использовать variable поле, стоит проверить, существует ли это поле также

<div th:if="${variable != null && variable.name != null}" th:text="${variable.name}">
   I wonder, if variable.name exists...
</div>

Или даже короче, без использования оператора if

<div th:text="${variable?.name}">
   I wonder, if variable.name exists...
</div>'

Но с помощью этого оператора вы закончите создание тега div независимо от того, существует ли variable или variable.name

Вы можете узнать больше об условиях в тимелист здесь

Ответ 2

Краткая форма:

<div th:if="${currentUser}">
    <h3>Name:</h3><h3 th:text="${currentUser.id}"></h3>
    <h3>Name:</h3><h3 th:text="${currentUser.username}"></h3>
</div>

Ответ 3

Чтобы определить, содержит ли контекст заданную переменную, вы можете напрямую запросить карту переменных контекста. Это позволяет определить, указана ли переменная вообще, в отличие от тех случаев, когда она определена, но со значением null.

Thymeleaf 2

Используйте #vars объект containsKey метод:

<div th:if="${#vars.containsKey('myVariable')}" th:text="Yes, $myVariable exists!"></div>

Thymeleaf 3

Используйте объект #ctx containsVariable:

<div th:if="${#ctx.containsVariable('myVariable')}" th:text="Yes, $myVariable exists!"></div>

Ответ 4

Вы можете использовать условные операторы. Это напишет переменную, если существует, или пустую строку:

<p th:text="${variable}?:''"></p>