我试图渲染一张包含减号(例如名字)的键的地图,例如:
<head><title>Data - ${first-name} </title>
当我使用FreeMarker渲染它时,它会抱怨并抛出异常。当我删除&#39; - &#39;从变量名称,它工作正常。
有没有办法在Groovy模板文本中转义这些变量?
我这样做的原因是从第三方API渲染JSON blob,我无法控制变量名。
答案 0 :(得分:1)
刚查看了Freemarker manual。在章节&#34;检索变量&#34;你有以下声明:
例如,要读取名称为&#34; data-id&#34;的变量, 表达式是data \ -id,因为data-id将被解释为&#34;数据减去 ID&#34 ;. (请注意,这些转义只能在标识符中使用,而不能在字符串中使用 文字。)
这些类型的表达式在Freemarker 2.3.23中运行良好(只是经过测试以验证文档):
<#if test\-dash??>
${test\-dash}
</#if>
答案 1 :(得分:0)
仅当您使用2.3.22或更高版本的freemarker版本时。见freemarker variable syntax:
在这种表达式中,变量名只能包含字母(包括非拉丁字母),数字(包括非拉丁字母),下划线(_),美元($),符号(@)。此外,第一个字符不能是ASCII数字(0-9)。从FreeMarker 2.3.22开始,变量名也可以在任何位置包含减号( - ),点(。)和冒号(:),但这些必须使用前面的反斜杠(\)进行转义,否则它们将是解释为运营商。