为什么Velocity没有取代价值?

时间:2015-10-19 07:53:46

标签: java apache velocity

我的模板String如下所示,我想替换 $ java.lang.Object.property

的值
     String tempString = "hi test message for velocity $java.lang.Object.property";

这里我将传递上下文地图如下

    VelocityContext context = new VelocityContext();
    context.put("java.lang.Object.property", "1");
    StringWriter message = new StringWriter();
    mVelocityEngine.evaluate( context, message, "LOG", tempString);

为什么速度引擎无法从模板中替换java.lang.Object.property的值?

请帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

简答:

请勿在您的上下文名称

中使用.

长答案:

Velocity对.有特殊待遇,我认为它实际上是试图打电话

context.get("java").getLang().getObject().getProperty()

我不是100%确定语法,但也许您可以尝试$['java.lang.Object.property']或类似...最好检查一下速度文档,了解如何通过字符串/地图查找来访问上下文变量。< / p>

另一种选择是将地图添加到上下文并通过以下方式访问:

$map['java.lang.Object.property']