Выводить на экран разные тексты на основе одной и той же заготовки можно при помощи системы шаблонов. Система шаблонов состоит из особой разметки и интерпретатора, обрабатывающего помеченные части текста. При помощи этой разметки, можно внедрять в текст переменные, метки и фильтры. Они обрабатываются интерпретатором перед выводом текста  на экран. Переменные заменяются интерпретатором на значения соответствующих атрибутов; метки определяют формат вывода текста; фильтры меняют выводимый текст.

1. Синтаксис

Текст, который будет обработан интерпретатором, отделяется от обычного текста фигурными скобками: { и }. Текст за пределами фигурных скобок выводится на экран без изменений.

1.1. Переменные

Чтобы вывести на экран переменную, вставьте в текст ее имя в окружении двух пар фигурных скобок:

{{country}}

1.2. Фильтры

К переменной можно применить один или несколько фильтров. Добавляйте следующие фильтры после значка конвейера (I):

{{str | toUpper | lpad:"10,*"}}

1.2.1. Доступные фильтры

НазваниеПояснение
appendToNotNullДобавляет в конец строковой переменной другую строку, если переменная не NULL.
В противном случае передает переменную дальше
clearPhoneПриводит номер телефона в переменной к стандартному виду: +71234567890
clearSnilsОчищает СНИЛС от всех знаков, кроме цифр
escapeJsonЭкранирует служебные символы JSON
getRefNameВозвращает имя из справочника, т.е. var | getRefName:<ID справочника> вернет по значению переменной var соответствующее имя
localeAVПолучает интернациональное значение от ID
lpadАналог lpad в SQL. {{string|lpad:"10,T"}} добавляет T слева до 10 символов
pluralОбразует формы числительного
prependToNotNullДобавляет перед строковой переменной другую строку, если переменная не NULL.
В противном случае возвращает NULL
strReplaceЗаменяет в строке одну подстроку на другую (PLSQL-replace)
strTranslateПроизводит пошаговую замену символов в строке (PLSQL-translate)
substrАналог substr в SQL, берет подстроку от переменной. 2 переметра: с какого символа и сколько символов берем

Пример (проверка из юнит теста): assertResult('{{string|substr:"1,5"}}', 'strin');

toCharАналог to_char в SQL. Приводит переменную нестрокового типа в строку
toDateАналог to_date в SQL. Приводит переменную строкового типа в дату
toLowerПереводит строки в нижний регистр
toUpperПереводит строки в верхний регистр
toWordsПереводит числа в слова
urlDecodeURL-декодирование строки
urlEncodeURL-кодирование строки
xmlDecodeРаскодирование XML
xmlEncodeXML-кодирование строки, экранирование служебных символы XML

1.3. Условные предписания

Условное предписание состоит из частей:

  • if;
  • elif (необязательная часть);
  • else (необязательная часть);
  • endif

и выглядит следующим образом:

{% if num_variable > 10 %}
	{{ num_variable }} is greater than 10
{% else %}
	{{ num_variable }} is less than 10
{% endif %}

Обратите внимание: имя переменной внутри условного предписания пишется без фигурных скобок!

Пример условного предписания с использованием elif:

{% if month > 0 and month <= 2 %}
     Зима;
{% elif month > 2 and month <= 5 %}
     Весна;
{% elif month > 5 and month <= 8 %}
     Лето;
{% elif month > 8 and month <= 11 %}
     Осень;
{% elif month = 12 %}
     ЗИМА;
{% else %}
     Месяцев только 12;
{% endif %}

1.4. Циклы

Цикл состоит из частей:

  • for ... in ...;
  • endfor.
{% for element in list %}
	{{counter}}. {{element}}
{% endfor %}

Имена списка (в этом примере: list) и текущего значения (element) пишутся без фигурных скобок.

1.5. Комментарии

Комментарии начинаются с {# и заканчиваются #}.

{# Your comments here #}

1.6. Управление параметрами компилятора

Команда setprm меняет настройки компилятора. Синтаксис: setprm <название_настройки> <новое_значение_настройки>.

{% setprm normalize_space on%}

Другие параметры пока настроить нельзя.

1.7. Генератор случайных чисел

Команда random выводит случайное число:

{% random 4 1 U %}

Синтаксис random совпадает с синтаксисом одноименного метода в пакете math.

/**
* Возвращает случайную последоватьность символов
* @param plen  длина последовательности
* @param pmixt тип последовательности, 1 = цифры и символы, 0 = только цифры
* @param pcase регистр, L - нижний, U - верхний, иначе - смешанный
*/
FUNCTION random(plen in number, pmixt number default 0, pcase varchar2 default null)
return varchar;

1.8. Временное отключение обработки

Содержимое блока verbatim ... endverbatim выводится системой шаблонов без обработки. 

{% verbatim %}
	public static void main() {{ System.out.println("Ignore {% it %}"); }}
{% endverbatim %}

2. Добавление шаблона. Многоязычность

Перейдите в раздел Общие настройки | Шаблоны | Список шаблонов. Выберите подходящий шаблон или создайте новый. Идентификатор выбранного шаблона вам понадобится на следующем шаге. Тексты шаблонов можно править или писать с нуля на языке HTML.

Чтобы создать новый шаблон, нажмите кнопку Добавить...

В карточке нового шаблона введите название, выберите группу:

Нажмите Добавить.

Раскройте карточку вновь добавленного шаблона, перейдите во вкладку Мультиязычные экземпляры. Нажмите Добавить...

Введите текст нового шаблона на выбранном языке:

Нажмите Добавить.

Обратите внимание! Для использования в функции отрисовки шаблонов (render_str_id) вам понадобится идентификатор шаблона, не экземпляра:

3. Создание кнопок при помощи шаблонов

Создание кнопок на форме при помощи шаблонов описано в статье Как создать на форме HTML-контрол (кнопку)?

  • No labels