以下のコードを作成しました。これは基本的に、 template 内のおよびHello simple Kishoreの値を代入して印刷する必要があります。$string$value.nameHello $string $value.name
の値を代入しますが、$string決して$value.name置き換えられません。
and の値を detempletize しようとしましたが、それは出力として$value正常に機能するTestClass$Sample@5594a1b5ため、問題はTemplate が object のフィールドにアクセスできないことです。
いくつかの制約により、 VelocityEngine.mergeTemplate ではなく、 VelocityEngine.evaluate 自体を使用する必要があります。
コード:
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