我正在使用 freemarker 生成一个 freemarker 模板。但我需要一些方法来逃避 freemarker 标签。
我将如何逃避一个<#list>
标签或一个${expression}
?
我正在使用 freemarker 生成一个 freemarker 模板。但我需要一些方法来逃避 freemarker 标签。
我将如何逃避一个<#list>
标签或一个${expression}
?
${"$"}{expression}
如果您发现 {} 嵌套令人困惑,您也可以使用:
我正在使用替代语法功能。我以 [#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}-"My friend's friend"。你不能用原始字符串做到这一点。我使用的有效方法是:
${"\x0024{Hello}-\"My friend's friend\""}
自从我使用双引号以来,我没有逃脱撇号。