Page 1 of 1

Integer in template

PostPosted: Fri Jul 14, 2017 4:04 pm
by dsaburov
TrackStudio 5.0.7.20161213

Здраствуйте, вопрос по использованию шаблонов для отправки почтовых уведомлений.
У нас есть пользовательское поле типа "integer" (на уровне рабочего процесса).
В почтовых уведомлениях его содержимое отображается например так: "111,222", а хотим так: "111222"
Я полез в файл "default_html.ftl", нашёл конструкцию
<#if udf.type == 'integer'>
${uValue}
</#if>

и заменил на:
<#if udf.type == 'integer'>
${uValue?c}
</#if>

На тестовом сервере это сработало, но на продакшене получил ошибки при попытке отправить email, например:
2017-07-14 08:47:11,167 ERROR freemarker.runtime:error:96 - Template processing error: "uValue is not a number, it is freemarker.template.SimpleScalar"

uValue is not a number, it is freemarker.template.SimpleScalar
The problematic instruction:
----------
==> ${uValue?c} [on line 84, column 21 in 2c90802517f2b3180117f34888fe004b]
in user-directive viewUdf [on line 646, column 17 in 2c90802517f2b3180117f34888fe004b]
----------

Попробовал на тестовом сервере такой вариант:
<#if udf.type == 'integer'>
${uValue?replace(",", "")}
</#if>

и получил уже ошибку:
Expected string. uValue evaluated instead to freemarker.template.SimpleNumber on line 84, column 23 in 2c90802517c4b5b40117c4b7e45c0002.
The problematic instruction:
----------
==> ${uValue?replace(",", "")} [on line 84, column 21 in 2c90802517c4b5b40117c4b7e45c0002]
in user-directive viewUdf [on line 647, column 17 in 2c90802517c4b5b40117c4b7e45c0002]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateException: Expected string. uValue evaluated instead to freemarker.template.SimpleNumber on line 84, column 23 in 2c90802517c4b5b40117c4b7e45c0002.


Я слабо разбираюсь в FTL, получается что на разных серверах поле "integer" имеет разный тип (строка или число)?
Как лучше "очистить" число от лишних символов?
Позже попробую на продакшене это:
<#if uValue?is_number>${uValue?c}<#else>${uValue?replace(",", "")}</#if>

Re: Integer in template

PostPosted: Mon Jul 17, 2017 4:52 pm
by dsaburov
Вроде решил проблему, добавив в начало файла:
<#setting number_format="computer">