Spring and Thymeleaf 3: выражения

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.