Java 当访问对象内的字段时,速度模板不会取消模板设置

Java 当访问对象内的字段时,速度模板不会取消模板设置,java,velocity,vtl,Java,Velocity,Vtl,我编写了以下代码,基本上需要打印Hello simple Kishore,方法是在模板Hello$string$value.name中替换$value.name>和$value.name>的值 它替换了$string的值,但是$value.name永远不会被替换。 我试图取消部署$value的值,这在TestClass中运行良好$Sample@5594a1b5作为输出,因此问题在于模板无法访问对象中的字段 由于一些限制,我不得不利用自己,而不是 代码: class Sample { pr

我编写了以下代码,基本上需要打印
Hello simple Kishore
,方法是在模板
Hello$string$value.name
中替换
$value.name>和
$value.name>的值

它替换了
$string
的值,但是
$value.name
永远不会被替换。
我试图取消部署
$value
的值,这在
TestClass中运行良好$Sample@5594a1b5
作为输出,因此问题在于模板无法访问对象中的字段

由于一些限制,我不得不利用自己,而不是

代码:

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
输出:

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 {
    ...

啊,我刚刚调试过它,发现创建所有方法缓存的
ClassMap
类查找公共修饰符
if Modifier.isPublic(classToReflect.getModifiers())populateMethodCacheWith(methodCache,classToReflect)谢谢:)