Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Velocity不会取代模板';具有VelocityContext的s变量_Java_Velocity - Fatal编程技术网

Java Velocity不会取代模板';具有VelocityContext的s变量

Java Velocity不会取代模板';具有VelocityContext的s变量,java,velocity,Java,Velocity,我是Velocity新手,发现很奇怪模板的变量没有被我输入VelocityContext的值替换 代码是这样的 import java.io.StringWriter; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; public class Main { public static vo

我是Velocity新手,发现很奇怪模板的变量没有被我输入VelocityContext的值替换

代码是这样的

import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class Main {
public static void main(String args[]){
    People XiaoMing=new People("XiaoMing", 11);
    VelocityEngine engine=new VelocityEngine();
    Template template=engine.getTemplate("/src/main/java/VMTemplate.vm");
    VelocityContext context=new VelocityContext();
    context.put("People", XiaoMing);
    StringWriter sw=new StringWriter(10000);
    template.merge(context, sw);
    System.out.println(sw.toString());
    }
}

class People{
  private String name;
  private int age;
  public People(String name,int age){
      this.name=name;
      this.age=age;
  }

  public String getName(){
      return name;
  }

  public int getAge(){
      return age;
   }
}
模板如下所示

#set($Name=$People.getName())
#set($Age=$People.getAge())

He is a $Age years old guy,and his name is $Name.
我不知道出了什么问题。你能帮我查一下吗


多谢各位

我相信有了一些模板后的语法是

VelocityContext context = new VelocityContext();
context.put("Name", XiaoMing.getName());

小明是一个人物对象,而不是一个字符串。

我相信你有了一些模板后的语法是正确的

VelocityContext context = new VelocityContext();
context.put("Name", XiaoMing.getName());

小明是一个人物对象,而不是字符串。

最后,我找到了在模板中不替换该对象的原因

只有当对象是公共对象时,才能通过Velocity对其进行分析。
因此,我只需要创建一个名为Xiaoming的公共类。

最后,我找到了在模板中不替换对象的原因

只有当对象是公共对象时,才能通过Velocity对其进行分析。
因此,我只需要创建一个名为Xiaoming的公共类。

我遇到了类似的问题。 如果使用自定义字段,则不需要上下文提供程序。 相反,如果覆盖AbstractCustomFieldType,它将返回一个映射


还有一个问题是,空格不能放在
开头的
\foreach
之前,不知道为什么。

我遇到了类似的问题。 如果使用自定义字段,则不需要上下文提供程序。 相反,如果覆盖AbstractCustomFieldType,它将返回一个映射


还有一个问题是,空格不能放在
开头的
\foreach
之前,不知道为什么。

告诉我们您做了什么/尝试了什么。不,我们无法为您找到答案,但我们可以帮助您找到答案谢谢您的回复。实际上,我希望模板中的字符串“$People”被变量“XiaoMing”替换。理想的结果是:他是一个11岁的小伙子,他的名字叫小明。告诉我们你做了什么/尝试了什么。不,我们无法为您找到答案,但我们可以帮助您找到答案谢谢您的回复。实际上,我希望模板中的字符串“$People”被变量“XiaoMing”替换。理想的结果是:他是一个11岁的小伙子,他的名字叫小明。谢谢!它起作用了。但是我仍然很困惑,为什么我不能在VelocityContext中输入一个对象?想想对象是什么。这是一组数据。如何打印对象(不是对象的属性)?当您执行System.out.println(小明)时会发生什么?实际上,VelocityContext可以接受一个对象。我发现的关键点是对象必须是公共的!如果我创建了一个公共对象,它就会工作。谢谢!它起作用了。但是我仍然很困惑,为什么我不能在VelocityContext中输入一个对象?想想对象是什么。这是一组数据。如何打印对象(不是对象的属性)?当您执行System.out.println(小明)时会发生什么?实际上,VelocityContext可以接受一个对象。我发现的关键点是对象必须是公共的!如果我创建一个公共对象,它就会工作。