速度找不到模板

时间:2012-06-20 17:47:55

标签: velocity filepath

我正在努力让Apache Velocity启动并运行。我的TestClass.class包中有my.test.package个班级。

public class TestClass {
    public static Template getTestTemplate() throws Exception {
        Velocity.init();
        return Velocity.getTemplate("MyTestTemplate.vm");
    } 
}

在同一位置(my.test.package),我有MyTestTemplate.vm个文件。

上面的代码会引发异常,说Unable to find resource 'MyTestTemplate.vm'。我不确定是什么问题。 Velocity不会在同一个包中查找文件吗? (注意:我最初将该文件放在resources文件夹中,但将其放在同一文件夹下以进行测试)。

1 个答案:

答案 0 :(得分:3)

好的,想通了。

所以我想也许Velocity正在查看我的WEB-INF/classes文件夹。我查看那里只是发现MyTestTemplate.vm文件不在那里。结果我需要更新我复制资源的Ant脚本以包含.vm个文件。

<include name="**/*.vm"/>

然后我需要更新我的配置,以便Velocity知道查看classes文件夹。

VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty("resource.loader", "class");
velocityEngine.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
velocityEngine.init();

然后,当您获得模板时,您只需要在WEB-INF/classes部分之后提供路径。

velocityEngine.getTemplate("path/to/resource/MyTestTemplate.vm");

我确信有一些方法可以从文件路径中取出模板,但我不再关心;)