访问对象内部的字段时,速度模板不会进行去分隔



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

它替换$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 {
    ...

相关内容

  • 没有找到相关文章

最新更新