Выводить на экран разные тексты на основе одной и той же заготовки можно при помощи системы шаблонов. Система шаблонов состоит из особой разметки и интерпретатора, обрабатывающего помеченные части текста. При помощи этой разметки, можно внедрять в текст переменные, метки и фильтры. Они обрабатываются интерпретатором перед выводом текста на экран. Переменные заменяются интерпретатором на значения соответствующих атрибутов; метки определяют формат вывода текста; фильтры меняют выводимый текст.
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 | Переводит числа в слова |
urlDecode | URL-декодирование строки |
urlEncode | URL-кодирование строки |
xmlDecode | Раскодирование XML |
xmlEncode | XML-кодирование строки, экранирование служебных символы 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-контрол (кнопку)?