7

我正在使用 freemarker 生成一个 freemarker 模板。但我需要一些方法来逃避 freemarker 标签。

我将如何逃避一个<#list>标签或一个${expression}

4

4 回答 4

9

${"$"}{expression}如果您发现 {} 嵌套令人困惑,您也可以使用:

于 2011-03-02T16:05:55.040 回答
7

我正在使用替代语法功能。我以 [#ftl] 开始模板并使用此语法。

对于表达式,我使用字符串文字功能:${r"${expression}"}

于 2009-10-29T17:31:25.337 回答
1

您可以将 FreeMarker 配置为使用[=exp]而不是${exp}(自 2.3.28 起),和[#...]/[@...]代替<#...>| <@...>通过将interpolation_syntaxtag_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

于 2018-04-05T12:12:35.770 回答
0

如果您想使用非原始字符串以便可以转义双引号、撇号等,您可以执行以下操作:

想象一下,您想在字符串中使用字符串 ${Hello}-"My friend's friend"。你不能用原始字符串做到这一点。我使用的有效方法是:

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

自从我使用双引号以来,我没有逃脱撇号。

于 2014-01-15T19:47:57.267 回答