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)代码>谢谢:)