如何在Freemarker的名称中使用带破折号的变量?

时间:2018-04-11 14:27:00

标签: freemarker

我试图渲染一张包含减号(例如名字)的键的地图,例如:

<head><title>Data - ${first-name} </title>

当我使用FreeMarker渲染它时,它会抱怨并抛出异常。当我删除&#39; - &#39;从变量名称,它工作正常。

有没有办法在Groovy模板文本中转义这些变量?

我这样做的原因是从第三方API渲染JSON blob,我无法控制变量名。

2 个答案:

答案 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开始,变量名也可以在任何位置包含减号( - ),点(。)和冒号(:),但这些必须使用前面的反斜杠(\)进行转义,否则它们将是解释为运营商。