Как лучше всего сделать простой if
- else
в Тимелеафе?
Я хочу добиться в Thymeleaf того же эффекта, что и
<c:choose>
<c:when test="${potentially_complex_expression}">
<h2>Hello!</h2>
</c:when>
<c:otherwise>
<span class="xxx">Something else</span>
</c:otherwise>
</c:choose>
в JSTL.
Что я понял до сих пор:
<div th:with="condition=${potentially_complex_expression}" th:remove="tag">
<h2 th:if="${condition}">Hello!</h2>
<span th:unless="${condition}" class="xxx">Something else</span>
</div>
Не хочу оценивать potentially_complex_expression
дважды. Вот почему я ввел локальную переменную condition
. Тем не менее, я не люблю использовать оба th:if="${condition}
и th:unless="${condition}"
.
Важно то, что я использую два разных HTML-тега: скажем h2
и span
.
Вы можете предложить лучший способ достичь этого?
Я попробовал этот код, чтобы узнать, вошел ли клиент в систему или анонимен. Я сделал с помощью
th:if
иth:unless
условных выражений. Довольно простой способ сделать это.источник
Я хотел бы поделиться своим примером, связанным с безопасностью, в дополнение к Даниэлю Фернандесу.
Вот сложное выражение со смешанными служебными объектами «аутентификация» и «авторизация», которое дает результат «истина / ложь» для кода шаблона тимелеафа.
Служебные объекты «аутентификация» и «авторизация» взяты из библиотеки thmeleaf extras springsecurity3 . Когда объект «аутентификации» недоступен ИЛИ authorization.expression ('isAuthenticated ()') оценивается как «false», выражение возвращает $ {false}, в противном случае - $ {true}.
источник
Ты можешь использовать
Пример:
Это может быть полезно для новых людей, задающих тот же вопрос.
источник
Другое решение - вы можете использовать локальную переменную:
Подробнее о локальных переменных:
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#local-variables
источник
th:each
где:
вместо выражения=
В более простом случае (когда теги html совпадают):
источник
Другое решение просто использовать
not
для получения противоположного отрицания:Как объясняется в документации , это то же самое, что и использование
th:unless
. Как объяснили другие ответы:Использование
not
также работает, но, IMHO, его удобнее использоватьth:unless
вместо отрицания условия с помощьюnot
.источник
источник
введите описание изображения здесь
источник
Использовать
th:switch
какif-else
Использовать
th:switch
какswitch
источник