velocity默认的资源加载器是FileResourceLoader,该加载器从文件系统中加载资源,当Velocity使用于Servlet中时,这会成为一个问题,很多人因此找不到模板。
velocity还有另外的资源加载器ClasspathResourceLoader,该加载器从类路径中加载资源。简单的说,该加载器会加载放置在类路径中的模版资源(比如在某个jar中)。在使用符合Servlet2.2或之后的版本的容器时,这是一个比较简单的机制。例如,你可以把模版放在/WEB-INF/classes/templates目录下。
下面代码获取模版/WEB-INF/classes/templates/hello.vm
Properties p = new Properties();
p.setProperty("resource.loader", "class");
p.setProperty("class.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
//设置资源加载器器为ClasspathResourceLoader,这段可以写到配置文件中
...
VelocityEngine ve = new VelocityEngine();
ve.init(p);
template = ve.getTemplate("/templates/hello.vm", "UTF-8");
...
目前velocity 1.5提供了6种加载器,除了上文提到的FileResourceLoader和ClasspathResourceLoa