Как установить переменную env условно в шаблоне свободного маркера

#linux #bash #templates #freemarker

#linux #bash #шаблоны #freemarker

Вопрос:

У меня есть .ftl с некоторыми операторами экспорта и для конкретной переменной я хотел бы выполнить условную проверку, если она существует и установлена. Я следовал синтаксису, упомянутому здесь, и мой сценарий выглядит следующим образом

 export my_app_name=${app_setttings.name}
export my_app_env=${my_app_env:-root}        # this is bash syntax but clasing with ftl syntax
  

Я получаю следующую ошибку

 Encountered ":", but was expecting one of:
"."
".."
<DOT_DOT_LESS>
.
.
.
<TERMINATING_EXCLAIM>
  

Ответ №1:

FreeMarker уже использует ${...} синтаксис по умолчанию, поэтому даже ${app_settings.name} будет проблемой, поскольку FreeMarker попытается его оценить. Таким образом, вы должны настроить FreeMarker на использование вместо этого синтаксиса интерполяции в квадратных скобках, который выглядит как [=...] вместо ${...} . В то же время, обычно вы также хотите установить синтаксис тега в квадратные скобки. Смотрите https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html

Я не уверен, как / где настроен FreeMarker в вашем случае. В Java это похоже configuration.setInterpolationSyntax(Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX) на and configuration.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX) , а в .properties файле это похоже interpolation_syntax=square_bracket на and tag_syntax=square_bracket .