问题描述
有谁知道是否可以通过速度从不同路径获取模板?初始化后,Velocity拒绝更改file.resource.loader.path。
Does anyone know if it is possible to get templates from different paths with velocity? After initialization Velocity refuses to change the "file.resource.loader.path".
这是我的代码:
public Generator(){
Properties p = new Properties();
p.setProperty("resource.loader", "file");
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
p.setProperty("file.resource.loader.path", "");
Velocity.init(p);
}
模板可以位于不同的位置(用户可以选择一个文件对话框)。所以我在从速度中取出模板时有这个代码
The templates can be located in different locations ( the user can select one with a file dialog ). So I have this code upon fetching the template out of velocity
private Template fetch (String templatePath) {
out_println("Initializing Velocity core...");
int end = templatePath.lastIndexOf(File.separator);
Properties p = new Properties();
p.setProperty("file.resource.loader.path", templatePath.substring(0, end));
Velocity.init(p);
return Velocity.getTemplate(templatePath.substring(end+1));
}
这不起作用。似乎一旦Velocity初始化,它就不能用不同的属性重置。有关如何解决此问题的任何建议?
This is not working. It seems that once Velocity is initialized it can't be reset with different properties. Any suggestions on how to solve this problem?
可能的计划流程:
- 用户选择需要填入模板的组
- 用户选择要使用的模板(可以位于硬盘驱动器的任何位置)
- 用户按下生成
推荐答案
Velocity可以通过两种方式使用: 单身模型或单独的实例模型。您当前正在使用单例模型,其中只允许JVM中的一个Velocity引擎实例。
Velocity can be used in two ways: the singleton model or the separate instance model. You are currently using the singleton model in which only one instance of the Velocity engine in the JVM is allowed.
相反,您应该使用单独的实例模型,它允许您在同一个JVM中创建多个Velocity实例,以支持不同的模板目录。
Instead, you should use the separate instance model which allows you to create multiple instances of Velocity in the same JVM in order to support different template directories.
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "path/to/templates");
ve.init();
Template t = ve.getTemplate("foo.vm");
这篇关于速度,不同的模板路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!