gpt4 book ai didi

java - 速度,不同的模板路径

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:15 25 4
gpt4 key购买 nike

有谁知道是否可以从不同的路径快速获取模板?初始化后 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);
}

模板可以位于不同的位置(用户可以使用文件对话框选择一个)。所以我在从 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 被初始化,它就不能用不同的属性重置。关于如何解决这个问题有什么建议吗?

可能的程序流程:

  1. 用户选择需要填写到模板中的组
  2. 用户选择要使用的模板(可以位于硬盘上的任何位置)
  3. 用户按下生成

最佳答案

速度有两种使用方式:singleton model or the separate instance model .您当前使用的是单例模型,其中仅允许在 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");

关于java - 速度,不同的模板路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com