[ 
https://issues.apache.org/jira/browse/FREEMARKER-170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

刘宏飞 updated FREEMARKER-170:
---------------------------
    Summary: Configuration.getTemplate方法太局限,应该提供按模板文件流生成Template对象的重载方法  (was: 
Configuration.getTemplate方法应该提供按模板文件流生成Template对象的重载方法)

> Configuration.getTemplate方法太局限,应该提供按模板文件流生成Template对象的重载方法
> ----------------------------------------------------------
>
>                 Key: FREEMARKER-170
>                 URL: https://issues.apache.org/jira/browse/FREEMARKER-170
>             Project: Apache Freemarker
>          Issue Type: Improvement
>          Components: engine
>    Affects Versions: 2.3.30
>         Environment: java version "1.8.0_171"
> IDEA
> windows 10
>            Reporter: 刘宏飞
>            Priority: Major
>              Labels: features, patch
>
> 在springboot中,我将模板文件test.ftl放在src/main/resources/templates/ 
> 调用Freemarker API操作模板,主要步骤如下:
> Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
> File templateConfigDir = new 
> File(this.getClass().getResource("/templates").getFile());
> cfg.setDirectoryForTemplateLoading(templateConfigDir);
> Template temp = cfg.getTemplate("test.ftl");
> 此时模板文件的路径是src/main/resources/templates/ ,在IDEA中测试没有问题。
> 但是当我把springboot工程打成jar包测试时,会得到一个异常:java.io.FileNotFoundException: 
> file:\C:\Users\Administrator\Desktop\ts\app-1.0.0-SNAPSHOT.jar!\BOOT-INF\classes!\templates
>  does not exist.
>  
> 查看原因,这个目录是jar包中的一个目录,此时无法访问到这个目录。
> 我的处理方式是:运行代码时,要将模板文件通过流的方式拷贝到工程外的一个目录,然后设置Freemarker:
> cfg.setDirectoryForTemplateLoading("工程外的配置目录");
>  
> 希望Freemarker可以提供一个重载API,不需要设置setDirectoryForTemplateLoading,生成Template对象时直接传入模板流(InputStream)。



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to