java - 访问对象内部的字段时,Velocity 模板不会去模板化

标签 java velocity vtl

我写了下面的代码,基本上需要打印Hello simple Kishore通过替换 $string 的值和 $value.name在模板内部 Hello $string $value.name .

它代替了$string的值然而$value.name永远不会被取代。
我试图去除 $value 的值这适用于 TestClass$Sample@5594a1b5作为输出,所以问题在于模板无法访问对象中的字段

由于某些限制,我必须使用 VelocityEngine.evaluate本身而不是 VelocityEngine.mergeTemplate .

代码:

class Sample {
    private String name = "Kishore";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class Test {
    public static void main(String args[]) throws Exception {
        String query = "Hello $string $value.name";

        VelocityContext vCtx = new VelocityContext();
        vCtx.put("string","simple");
        vCtx.put("value", new Sample());

        Writer out = new StringWriter();
        VelocityEngine engine = new VelocityEngine();
        engine.init();
        engine.evaluate(vCtx, out, "ERR:", new StringReader(query));

        System.out.println(out.toString());
    }
}

输出:

Hello simple $value.name

最佳答案

要解决此问题,您应该为 Sample 类添加 public 修饰符:

public class Sample {
    ...

关于java - 访问对象内部的字段时,Velocity 模板不会去模板化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41465888/

相关文章:

unit-testing - 如何为速度模板编写单元测试?

java - JBoss 6.1 中的消息不自动确认

java - 设计模式,它们与其他编程风格有何不同?

html - 带页眉和页脚的速度邮件

php - 使用 PHP 的 Apache 速度

aws-sdk - 是否有使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?

json - 是否可以将所有阶段变量添加到嵌套 JSON 结构中的正文映射模板中?

java - 如何在随机生成数字后返回单位数计数(Java,数组)

java - 客户端状态保存,我可以通过什么方式查看发送到客户端的状态数据?

javascript - 如何从 Apache Velocity 中的 .vm 文件获取整个 HTML?