我需要访问名为:
的Velocity模板变量的值$myFeature.enabled
记住名称中的 dot 。它在代码中定义为:
myFeature.enabled=true
问题在于,当我想使用以下表达式获取带有 html 上下文的变量的值时:
'${myFeature.enabled}'
它没有解决,只是给出:
"${myFeature.enabled}"
我试图用 \ 来逃避点,或者将撇号更改为“,但没有运气。
由于各种原因,将变量名称更改为没有点的变量并非易事,因此请建议任何其他解决方案。
答案 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