...

пятница, 16 марта 2018 г.

Учебник Thymeleaf: Глава 7. Условное выполнение

Оглавление

7 Условное выполнение


7.1 Простые условия: «if» (если) и «unless» (если не)


Иногда вам понадобится фрагмент шаблона, чтобы появляться только в результате выполнения определенного условия.
Например, представьте, что мы хотим показать в таблице продуктов столбец с количеством комментариев, которые существуют для каждого продукта, и, если есть какие-либо комментарии — ссылку на страницу комментариев.

Для этого используем атрибут th:if:

NAME PRICE IN STOCK COMMENTS
Onions 2.41 yes 2 comment/s view

Здесь очень много вещей, поэтому давайте сосредоточимся на важной строке:
view

Этот код создаст ссылку на страницу комментариев (с URL /product/comments) с параметром prodId, установленным на идентификатор продукта, но только если у продукта есть какие-либо комментарии.

Давайте посмотрим на полученную разметку:

NAME PRICE IN STOCK COMMENTS
Fresh Sweet Basil 4.99 yes 0 comment/s
Italian Tomato 1.25 no 2 comment/s view
Yellow Bell Pepper 2.50 yes 0 comment/s
Old Cheddar 18.75 yes 1 comment/s view

Отлично! Это именно то, что мы хотели.

Обратите внимание, что атрибут th:if будет не только оценивать логические условия. Его возможности немного выше этого, и он будет оценивать указанное выражение как истинное, следуя этим правилам:

Если значение не равно null:

  • Если значение является логическим и true
  • Если значение является числом и отличным от нуля
  • Если значение является символом и отличным от нуля
  • Если значение является String и не является «false», «off» или «no»
  • Если значение не является boolean, числом, символом или String

Если значение равно null, th:if будет установлено в значение false.

Кроме того, th:if имеет инверсивный атрибут, th:unless, который мы могли бы использовать в предыдущем примере вместо использования not (отрицания) внутри выражения OGNL:

view

7.2 Switch statements


Существует также способ условно отображать контент, используя эквивалент структуры switch в Java: набор атрибутов th:switch / th:case.

User is an administrator

User is a manager


Обратите внимание, что как только один атрибут th:case оценивается как true, каждый другой атрибут th:case в том же контексте коммутатора оценивается как false.

Параметр по умолчанию указан как: th:case="*":

User is an administrator

User is a manager

User is some other thing

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий