带有特殊字符的Velocity模板变量名称 - 点

时间:2014-05-27 12:53:58

标签: java javascript velocity

我需要访问名为:

的Velocity模板变量的值
$myFeature.enabled

记住名称中的 dot 。它在代码中定义为:

myFeature.enabled=true

问题在于,当我想使用以下表达式获取带有 html 上下文的变量的值时:

'${myFeature.enabled}'

它没有解决,只是给出:

"${myFeature.enabled}"

我试图用 \ 来逃避点,或者将撇号更改为,但没有运气。

由于各种原因,将变量名称更改为没有点的变量并非易事,因此请建议任何其他解决方案

3 个答案:

答案 0 :(得分:10)

答案很简单:

速度variable naming不允许变量

中的点

另外here

  

使用$ SINGLE.VARIABLE.IDENTIFIER.WITH.DOTS没有反斜杠是   需要。 引擎不会将此类表达式视为变量   因为Velocity 变量不能包含点而被处理   到Velocity变量表示法。

链接:

答案 1 :(得分:3)

根据Velocity variable notation,变量不能包含点。

答案 2 :(得分:0)

解决问题的方法是将速度上下文本身添加到上下文中:

VelocityContext context = new VelocityContext();
context.put("globals", context); // <-- TADA
context.put("myFeature.enabled", Boolean.TRUE);
// ...

然后从模板中执行:

#if ($globals.get('myFeature.enabled'))
...
#end