gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:25 24 4
gpt4 key购买 nike

我写了下面的代码,基本上需要打印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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com