3

以下のコードを作成しました。これは基本的に、 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
4

1 に答える 1