Freemarker убегает от freemarker

Я использую freemarker для создания шаблона freemarker. Но мне нужен какой-то способ избежать тегов freemarker.

Как мне избежать тега <#list> или ${expression} ?


person tuler    schedule 29.10.2009    source источник


Ответы (4)


Вы также можете использовать: ${"$"}{expression}, если вложение {} вас сбивает с толку.

person monzonj    schedule 02.03.2011
comment
Лучший из всех предложенных на сегодняшний день вариантов. Уму непостижимо, что нет более простого способа, такого как \$, но его нет. Это достаточно хорошее приближение к элегантности... - person Stevel; 27.06.2017

Я использую функцию альтернативного синтаксиса. Я начинаю шаблон с [#ftl] и использую этот синтаксис.

Для выражений я использую функцию строкового литерала: ${r"${expression}"}

person tuler    schedule 29.10.2009
comment
Я использую тот же подход, который немного уродлив, но работает. Становится очень неприятно, если я использую переменную внешнего шаблона для определения доступа к свойству переменной сгенерированного шаблона, который выглядит так: ${r${entity.}${propertyDescriptor.name}} и заканчивается как $ {entity.creationDate}, учитывая, что свойствоDescriptor имеет имя createDate. - person Peter Becker; 05.11.2009

Вы можете настроить FreeMarker для использования [=exp] вместо ${exp} (начиная с версии 2.3.28) и [#...]/[@...] вместо <#...>|<@...>, установив для параметра конфигурации interpolation_syntax и tag_syntax значение square_bracket (в Java API: Configuration cfg; ... cfg.setInterpolationSyntax(Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX) и cfg.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX)). Тогда синтаксис не конфликтует с синтаксисом по умолчанию.

Есть один сложный случай; если шаблон начинается с <#ftl>, то он переключит синтаксис тега обратно на angle_bracket. Чтобы противостоять этому, просто добавьте перед ним строку [#ftl].

См. также: https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html

person ddekany    schedule 05.04.2018

В случае, когда вы хотите использовать не необработанные строки, чтобы избежать двойных кавычек, апострофов и т. д., вы можете сделать следующее:

Представьте, что вы хотите использовать строку ${Hello}-"Друг моего друга" внутри строки. Вы не можете сделать это с необработанными строками. То, что я использовал, работает:

${"\x0024{Hello}-\"My friend's friend\""}

Я не избегал апострофа, так как использовал двойные кавычки.

person Jaime Garza    schedule 15.01.2014