gpt4 book ai didi

java - Velocity 在哪里搜索模板?

转载 作者:太空狗 更新时间:2023-10-29 22:40:07 25 4
gpt4 key购买 nike

我需要在 Web 应用程序中使用来自 Java 代码的 Velocity(我将其用作邮件模板处理器)。

所以,我有一个标准代码:

VelocityEngine ve = new VelocityEngine ();
try {
ve.init ();
Template t = ve.getTemplate (templatePath);
...
} catch (Exception e) {
throw new MailingException (e);
}

此代码总是抛出 ResourceNotFoundException。我应该将我的模板放在网络应用程序的什么地方(WEB-INF?类路径?等等?)以及我应该如何指定路径(即我应该将什么作为 templatePath 传递)?

最佳答案

设置速度模板

我最终使用这个问题来解决设置模板路径的问题。我正在使用 velocity 来制作 html 电子邮件的模板。

您可以使用以下几种很好的方法来说明如何设置模板路径。它将属性“file.resource.loader.path”设置为绝对路径。我为模板创建了一个目录,然后右键单击模板文件以获取完整路径(在 Eclipse 中)。您使用该完整路径作为 file.resource.loader.path 属性的值。我还添加了“runtime.log.logsystem.class”属性,并设置了它,因为我收到了提示日志记录的异常。

效用速度方法

public static VelocityEngine  getVelocityEngine(){

VelocityEngine ve = new VelocityEngine();
Properties props = new Properties();
// THIS PATH CAN BE HARDCODED BUT IDEALLY YOUD GET IT FROM A PROPERTIES FILE
String path = "/absolute/path/to/templates/dir/on/your/machine";
props.put("file.resource.loader.path", path);
props.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
ve.init(props);
return ve;
}

public static String getHtmlByTemplateAndContext(String templateName, VelocityContext context){

VelocityEngine ve = getVelocityEngine();

Template template = ve.getTemplate(templateName);

StringWriter writer = new StringWriter();
template.merge(context, writer );
System.out.println( writer.toString());
String velocityHtml = writer.toString();
return velocityHtml;
}

如何使用上面的代码,创建一个速度上下文以提供实用方法

下面是如何使用上述方法。您只需指定模板文件的文件名,并创建一个简单的 VelocityContext 上下文来存储您的模板变量。

        VelocityContext context = new VelocityContext();
context.put("lastName", "Mavis");
context.put("firstName", "Roger");
context.put("email", "mrRogers@wmail.com");
context.put("title", "Mr.");

String html = VelocityUtil.getHtmlByTemplateAndContext("email_template_2015_10_09.vm", context);

示例模板 HTML

可以像这样访问变量(在我的例子中保存在文件 email_template_2015_10_09.vm 中):

<p> Hello $firstName $lastName </p>

关于java - Velocity 在哪里搜索模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229197/

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