如何通过 getTemplate() 方法从外部 URL 获取 VelocityEngine 模板?
How to get VelocityEngine template from an external URL through getTemplate() method?
我正在开发 AppEngine-java 项目。我正在使用 VelocityEngine 作为模板工具来自定义 Html 文件。我已将我的模板文件放在 google-cloudstorage。我想要的只是通过 Java 中的 getTemplate() 方法将该文件初始化为 'Template'。我需要帮助..
..就是想做这个,
VelocityEngine ve = new VelocityEngine();
ve.init();
Template t = ve.getTemplate("http://storage.googleapis.com/....bucket_name...../html_templates/....file_name....html");
提前致谢。
我找到了一种方法,但方式不同,
try {
BufferedInputStream input = new BufferedInputStream(new URL("http://storage.googleapis.com/.....appspot.com/html_templates/....html").openStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(input, baos);
byte[] bytes = baos.toByteArray();
Reader templateReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
VelocityContext context = new VelocityContext();
context.put("template_field", getString(fieldVariable));
...
StringWriter swOut = new StringWriter();
Velocity.evaluate(context, swOut, "log tag name", templateReader);
return swOut.toString()
}catch (Exception e) {
e.printStackTrace();
}
此代码将在通过 URL 读取模板并通过 Velocity Engine 向其添加上下文后生成一个字符串。
我正在开发 AppEngine-java 项目。我正在使用 VelocityEngine 作为模板工具来自定义 Html 文件。我已将我的模板文件放在 google-cloudstorage。我想要的只是通过 Java 中的 getTemplate() 方法将该文件初始化为 'Template'。我需要帮助..
..就是想做这个,
VelocityEngine ve = new VelocityEngine();
ve.init();
Template t = ve.getTemplate("http://storage.googleapis.com/....bucket_name...../html_templates/....file_name....html");
提前致谢。
我找到了一种方法,但方式不同,
try {
BufferedInputStream input = new BufferedInputStream(new URL("http://storage.googleapis.com/.....appspot.com/html_templates/....html").openStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(input, baos);
byte[] bytes = baos.toByteArray();
Reader templateReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
VelocityContext context = new VelocityContext();
context.put("template_field", getString(fieldVariable));
...
StringWriter swOut = new StringWriter();
Velocity.evaluate(context, swOut, "log tag name", templateReader);
return swOut.toString()
}catch (Exception e) {
e.printStackTrace();
}
此代码将在通过 URL 读取模板并通过 Velocity Engine 向其添加上下文后生成一个字符串。