2. Определение шаблона
Мы разработаем сообщение для создателя бронирования, которое состоит из шаблона темы и шаблона основной части.
Создание шаблона темы
Давайте создадим шаблон для темы сообщения, которое будет отправлено создателю бронирования. Этот шаблон будет динамически включать название бронирования, делая тему сообщения персонализированной и релевантной.
Перейдите в экран Message Templates в вашем приложении. Нажмите кнопку Create, чтобы начать создание нового шаблона.
После нажатия кнопки Create, откроется конструктор шаблонов. Вот как настроить шаблон:
-
Name: Введите удобочитаемое название для шаблона, например,
Booking Email Subject
. Это название поможет вам легко идентифицировать шаблон в списке. -
Code: Установите код шаблона равным
booking-email-subject
. Этот код будет использоваться позже для программной ссылки на шаблон. -
Type: Выберите Plain text в качестве типа шаблона, поскольку строка темы не требует HTML-форматирования.
-
Content: Определите содержание шаблона. Для строки темы используйте следующий формат:
Booking confirmation for ${booking.title}
Здесь
${booking.title}
- это плейсхолдер Apache FreeMarker, который будет заменен фактическим названием бронирования при создании сообщения.

После того, как шаблон темы настроен, сохраните его.
Создание шаблона тела письма
Далее мы перейдем к созданию шаблона, который будет формировать тело нашего сообщения. Еще раз нажмите кнопку Create, а затем укажите следующие значения для атрибутов шаблона:
-
Name: Введите удобочитаемое название для шаблона, например,
Booking Email Body
. -
Code: Установите код шаблона равным
booking-email-body
. Этот код будет использоваться позже для программной ссылки на шаблон. -
Type: Выберите HTML в качестве типа шаблона. Это указывает на то, что шаблон будет содержать HTML-разметку.
-
Content: Определите содержание шаблона. Для этого просто перетащите необходимые элементы из палитры, расположенной в правой части конструктора, непосредственно на холст.
Создайте шаблон, расположив элементы из палитры так, чтобы он соответствовал следующему содержанию:
Hello ${booking.creator.firstName}! Thank you for booking your date and time for ${booking.title}. Your time starts at ${booking.startDate?datetime} and ends at ${booking.endDate?datetime} The booking took place ${today?date}. The penalty for false is ${penalty?string.currency}. Have a nice day, Developer team. Developer www.jmix.io
Этот шаблон отформатирован с использованием принципов шаблонизатора Apache FreeMarker.
Давайте разберем выражение
${booking.startDate?datetime}
в Apache FreeMarker:-
${…}
: Это синтаксис интерполяции в FreeMarker. Он указывает FreeMarker оценить выражение внутри фигурных скобок и вставить результат в вывод. Рассматривайте это как плейсхолдер, который будет заменен динамическим значением. -
booking.startDate
: Это ссылка на переменную. В данном случае предполагается, что у вас есть переменная с именемbooking
, которая является объектом (JPA-сущностью), и у этого объекта есть свойство с именемstartDate
. FreeMarker использует точечную нотацию для доступа к свойствам объектов. -
?datetime
: Это встроенная функция в FreeMarker. Она используется для форматирования значения как даты и времени. Символ?
используется для применения встроенной функции к значению слева от него.Для получения более подробной информации, пожалуйста, обратитесь к документации FreeMarker.
-
Сохраните шаблон.
Резюме
Подводя итоги, в этом разделе вы узнали, как:
-
Перемещаться в экран Message templates.
-
Создавать новые шаблоны с помощью редактора шаблонов.
-
Определять отдельные шаблоны для темы и тела письма.