Я использую freemarker для создания шаблона freemarker. Но мне нужен какой-то способ избежать тегов freemarker.
Как мне избежать тега <#list>
или ${expression}
?
Я использую freemarker для создания шаблона freemarker. Но мне нужен какой-то способ избежать тегов freemarker.
Как мне избежать тега <#list>
или ${expression}
?
Вы также можете использовать: ${"$"}{expression}
, если вложение {} вас сбивает с толку.
\$
, но его нет. Это достаточно хорошее приближение к элегантности...
- person Stevel; 27.06.2017
Я использую функцию альтернативного синтаксиса. Я начинаю шаблон с [#ftl] и использую этот синтаксис.
Для выражений я использую функцию строкового литерала: ${r"${expression}"}
Вы можете настроить 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
В случае, когда вы хотите использовать не необработанные строки, чтобы избежать двойных кавычек, апострофов и т. д., вы можете сделать следующее:
Представьте, что вы хотите использовать строку ${Hello}-"Друг моего друга" внутри строки. Вы не можете сделать это с необработанными строками. То, что я использовал, работает:
${"\x0024{Hello}-\"My friend's friend\""}
Я не избегал апострофа, так как использовал двойные кавычки.