有谁知道是否有可能从速度不同的路径获取模板?初始化后,Velocity拒绝更改"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);
}
Run Code Online (Sandbox Code Playgroud)
模板可以位于不同的位置(用户可以选择带有文件对话框的模板).所以我在从速度中取出模板时有这个代码
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));
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.似乎一旦Velocity初始化,它就不能用不同的属性重置.有关如何解决这个问题的任何建议?
可能的计划流程:
dog*_*ane 23
Velocity可以以两种方式使用:单例模型或单独的实例模型.您当前正在使用单例模型,其中只允许JVM中的一个Velocity引擎实例.
相反,您应该使用单独的实例模型,该模型允许您在同一JVM中创建Velocity的多个实例,以支持不同的模板目录.
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "path/to/templates");
ve.init();
Template t = ve.getTemplate("foo.vm");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16825 次 |
| 最近记录: |