Spring and Thymeleaf 3: выражения
1. Вступление
Thymeleaf - это шаблонизатор Java для обработки и создания HTML, XML, JavaScript, CSS и простого текста. Чтобы познакомиться с Thymeleaf и Spring, посмотритеthis write-up.
Помимо этих основных функций, Thymeleaf предлагает нам набор служебных объектов, которые помогут нам выполнять общие задачи в нашем приложении.
В этой статье мы обсудим основную функцию Thymeleaf 3.0 - служебные объекты Expression в приложениях Spring MVC. В частности, мы рассмотрим тему обработки дат, календарей, строк, объектов и многого другого.
2. Maven Зависимости
Во-первых, давайте посмотрим необходимую конфигурацию, необходимую для интеграции Thymeleaf с Spring. Библиотекаthymeleaf-spring требуется в наших зависимостях:
org.thymeleaf
thymeleaf
3.0.9.RELEASE
org.thymeleaf
thymeleaf-spring5
3.0.9.RELEASE
Обратите внимание, что для проекта Spring 4 библиотекаthymeleaf-spring4 должна использоваться вместоthymeleaf-spring5. Последнюю версию зависимостей можно найтиhere.
3. Объекты утилит выражений
Прежде чем перейти к основной теме этой статьи, если вы хотите сделать шаг назад и посмотреть, как настроить Thymeleaf 3.0 в своем проекте веб-приложения, взгляните на этотtutorial.
Для целей данной статьи мы создали контроллер Spring и HTML-файл, чтобы протестировать все функции, которые мы собираемся обсудить. Ниже приведен полный список доступных вспомогательных объектов и их функций:
-
#dates: служебные методы для объектовjava.util.Date
-
#calendars: аналог#dates, используется для объектовjava.util.Calendar
-
#numbers: служебные методы для форматирования числовых объектов
-
#strings: служебные методы для объектовString
-
#objects: служебные методы для класса JavaObject в целом
-
#bools: служебные методы для оценкиboolean
-
#arrays: служебные методы для массивов
-
#lists: служебные методы для списков
-
#sets: служебные методы для наборов
-
#maps: служебные методы для карт
-
#aggregates: служебные методы для создания агрегатов в массивах или коллекциях
-
#messages: служебные методы для получения внешних сообщений внутри выражений переменных
3.1. Даты Объекты
Первая функция, которую мы хотим обсудить, - это обработка объектовjava.util.Date. Вспомогательные объекты выражения, отвечающие за обработкуdate, начинаются с#dates.functionName().. Первая функция, которую мы хотим охватить, - это форматирование объектаDate (который добавляется к параметрам модели Spring).
Допустим, мы хотим использовать форматISO8601:
Независимо от того, как нашdate был установлен на серверной стороне, он должен отображаться в соответствии с этим стандартом. Более того, если мы хотим уточнить формат, мы можем указать его вручную:
Функция принимает в качестве параметров две переменные:Date и ее формат.
Наконец, вот несколько подобных полезных функций, которые мы можем использовать:
В первом мы получим название дня недели, во втором мы создадим новый объектDate, и, наконец, мы создадим новыйDate со временем, установленным на 00:00 .
3.2. Объекты календаря
Утилиты календаря очень похожи на обработку дат, за исключением того, что мы используем экземпляр объектаjava.util.Calendar:
Единственная разница в том, когда мы хотим создать новый экземплярCalendar:
Обратите внимание, что мы можем использовать любой метод классаCalendar для получения запрошенных данных.
3.3. Обработка чисел
Еще одна очень полезная функция - обработка чисел. Давайте сосредоточимся на переменнойnum, случайно созданной с типомdouble:
В первой строке мы форматируем десятичное число, устанавливая минимальные целые и точные десятичные цифры. Во втором, помимо целых и десятичных цифр, мы указали десятичный разделитель. Возможные варианты:POINT,COMMA,WHITESPACE,NONE илиDEFAULT (в зависимости от локали).
Есть еще одна функция, которую мы хотим представить в этом параграфе. Это создание последовательности целых чисел:
В первом примере мы заставили Thymeleaf сгенерировать последовательность из 0-2, тогда как во втором, в дополнение к минимальному и максимальному значению, мы предоставили определение шага (в этом примере значения изменятся на два).
Обратите внимание, что интервал закрыт с обеих сторон.
3.4. Строковые операции
Это наиболее полная особенность объектов выражения выражения.
Начнем описание с утилиты проверки пустых объектов или объектовnullString. Довольно часто для этого разработчики используют методы Java внутри тегов Thymeleaf, что может быть небезопасно для объектовnull.
Вместо этого мы можем сделать это:
ПервыйString не пустой, поэтому метод вернетfalse.. ВторойString равенnull, поэтому мы получимtrue. Наконец, мы можем использовать метод#strings.defaultString(…), чтобы указать значение по умолчанию, еслиString будет пустым.
Есть еще много методов. Все они работают не только со строками, но и сJava.Collections.. Например, для использования операций, связанных с подстроками:
или использовать нулевое безопасное сравнение и объединение:
Наконец, есть функции, связанные с текстовым стилем, которые сохранят синтаксис всегда одинаковым:
В первом методе сокращенный текст будет иметь максимальный размерn. Если текст больше, он будет обрезан и завершен знаком «…».
Во втором методе мы будем использовать слова с большой буквы.
3.5. сводные показатели
Последняя, но не менее важная функция, которую мы хотим здесь обсудить, - этоaggregates. Они безопасны дляnull и предоставляют утилиты для вычисления среднего значения или суммы из массива или любой другой коллекции:
4. Заключение
В этой статье мы обсудили функции Expression Utility Objects, реализованные в платформе Thymeleaf версии 3.0.
Полную реализацию этого руководства можно найти вthe GitHub project.
How to test? Мы предлагаем сначала поиграть с браузером, а затем также проверить существующие тесты JUnit.
Обратите внимание, что примеры не охватывают все доступные выражения утилит. Если вы хотите узнать обо всех типах утилит, посмотритеhere.