如何通过getTemplate()方法从外部URL获取VelocityEngine模板?

时间:2015-05-01 11:24:11

标签: java google-app-engine velocity

我正在开发一个AppEngine-java项目。我使用VelocityEngine作为模板工具来自定义Html文件。我已将模板文件放在google-cloudstorage中。我想要的只是将该文件初始化为'模板'通过Java中的getTemplate()方法。我在这里需要帮助..

..只是想这样做,

VelocityEngine ve = new VelocityEngine();
ve.init();
Template t = ve.getTemplate("http://storage.googleapis.com/....bucket_name...../html_templates/....file_name....html");

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了一种方法,但以不同的方式,

 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向其添加上下文后生成字符串。