为什么 Velocity 不替换值?

Why Velocity is not replacing values?

我的模板字符串如下,我想替换 $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 的值?

请帮忙。 提前致谢。

简答:

不要在上下文名称中使用 .

长答案:

Velocity 对 . 进行了特殊处理,我认为它实际上是在尝试调用

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

我不是 100% 确定语法但也许你可以尝试 $['java.lang.Object.property'] 或类似的...可能最好检查速度文档以了解如何通过 string/map 查找访问上下文变量.

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

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