你的位置:首页 > Java教程

[Java教程]Freemarker中Configuration的setClassForTemplateLoading方法参数问题

Freemarker中Configuration的setClassForTemplateLoading..._博客园

Freemarker中Configuration的setClassForTemplateLoading方法参数问题 今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加...

Freemarker中Configuration的setClassForTemplateLoadi..._CSDN博客

Freemarker中Configuration的setClassForTemplateLoading方法参数问题转载 qq_ 发布于2016-09-21 16:45:33 阅读数 10482 收藏 展开 Freemarke...

Freemarker中Configuration的setClassForTemplateLoadi..._CSDN博客

Freemarker中Configuration的setClassForTemplateLoading方法参数问题 2018-11-06 09:59:05 写bug小能手 阅读数 1551 Freemarker是一个模板框架,主要...

...中setClassForTemplateLoading方法参数问题,请大家..._CSDN论坛

12条回复nbsp;-nbsp;发帖时间:nbsp;2017年12月18日Freemarker中Configuration的setClassForTemplateLoading方法参数问题 Freemarker是一个模板框架,主要是为了加快染速度而产生的。它与web容器无关,只...

freemarker中setClassForTemplateLoading方法参数有关问题,请大家...

求助freemarker中setClassForTemplateLoading方法参数问题,请大家帮忙.谢谢如题,Configuration.setClassForTemplateLoading(this.getClass(),quot;WEB-INF...

求助freemarker中setClassForTemplateLoading方法参数问_百度知道

2个回答 - 回答时间: 2018年3月9日

假设你的configuration.setClassForTemplateLoading(this.getClass(),quot;/templatequot;);在src..test.test.java中,该方法的第二个参数即模板所在的文件夹...更多关于Freemarker中Configuration的setClassForTemplateLoading方法参数问题的问题gt;gt;

Freemarker中Configuration的setClassForTemplateLoading方法参数...

Freemarker中Configuration的setClassForTemplateLoading方法参数问题 今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加...

Freemarker中Configuration的setClassForTemplateLoading方法参数...

5条回复nbsp;-nbsp;发帖时间:nbsp;2014年6月4日使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加载模板目录的错误,求Freemarke ..

freemarker中setClassForTemplateLoading方法参数有关问题,请大家...

求助freemarker中setClassForTemplateLoading 方法参数问题,请大家帮忙.谢谢 ,Configuration.setClassForTemplateLoading(this.getClass(),WEB-INF/us...

园荐-方法,Configuration,Freemarker-相关博文:Freemarker中...

Freemarker中Configuration的setClassForTemplateLoading方法参数问题 2014-04-24 20:20 − Freemarker的加载模板目录问题,它的语法就不描述了。具体的语法可在官网下...

freemarker中setclassfortemplateloading方法参数有关问题,请大家...

freemarker中setclassfortemplateloading方法参数有关问题,请大家帮忙多谢_计算机软件及应用_IT/计算机_专业资料。freemarker +申请认 文档贡献者 ...

Freemarker静态化加载模板的三种方式 —技术博客

Freemarker提供了三种加载模板目录的方法 它使用Configuration类加载模板 三种方法分别是 public void setDirectoryForTemplateLoading File dir thro...

freemarker-FreeMarker 设置模板存放路径的问题,请大神过目...

就要把文件放到别的目录中,,,在这网上有解决方案是...template.Configuration; import freemarker.template....{ cfg.setDirectoryForTemplateLoading...

freeMarker模板加载 - 综合编程类其他综合 - 红黑联盟

(这里的cfg就是Configuration实例)时,FreeMarker询问...在Configuration中可以使用下面的方法来方便建立三种模板...void setClassForTemplateLoading(...

JAVA获取CLASSPATH路径与FreeMarker设置模板路径 -控件新闻-慧都网

FreeMarker的Configuration对象中设置模板路径有以下三种方法: setDirectoryForTemplate...setClassForTemplateLoading(clazz, pathPrefix) 标签: 本...

Java Web项目中使用Freemarker生成Word文档-学习库

需要向项目中加入freemarker的JAR文件,可以通过下面的链接获得Freemarker的最新版本:...(quot;utf-8quot;); configuration.setClassForTemplateLoading(WordGenerator.class, quot;/...

文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型_云博客...

博客...去浙江的旅游团价格去浙江的旅游团价格去浙江的旅游团价格去浙江的旅游团价格去浙江的旅游团价格去浙江的旅游团价格西北去波兰旅游 西北去波兰旅游 西北去波兰旅游 西北去波兰旅游 西北去波兰旅游 西北去波兰旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去波斯尼亚和墨塞哥维那旅游 西北去玻利维亚旅游 西北去玻利维亚旅游 西北去玻利维亚旅游 西北去玻利维亚旅游 西北去玻利维亚旅游 西北去玻利维亚旅游 西北去伯利兹旅游 西北去伯利兹旅游 西北去伯利兹旅游 西北去伯利兹旅游 西北去伯利兹旅游 西北去伯利兹旅游

今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加载模板目录的一个小问题。

由于网上的其他论坛,博客写的有点乱,故记录一下。

 

Freemarker是一个模板框架,主要是为了加快染速度而产生的。它与web容器无关,只要是关于模板生成一些代码的都可以使用它完成。

比如

 

本文主要讲的是Freemarker的加载模板目录问题,它的语法就不描述了。具体的语法可在官网下载参考手册参考即可。

加载模板目录方法

Freemarker提供了3种加载模板目录的方法。 它使用Configuration类加载模板

3种方法分别是:

public void setClassForTemplateLoading(Class clazz, String pathPrefix);

public void setDirectoryForTemplateLoading(File dir) throws IOException;

public void setServletContextForTemplateLoading(Object servletContext, String path);

看名字也就知道了,分别基于类路径、文件系统以及Servlet Context。

 

第二,三种没啥好说的。

第二种基于文件系统。 比如加载/home/user/template下的模板文件。

Configuration cfg = new Configuration();cfg.setDirectoryForTemplateLoading(new File("/home/user/template"));cfg.getTemplate("Base.ftl");

这样就获得了/home/user/template/Base.ftl这个模板文件。

 

第三种基于web project。 第二个参数是基于WebRoot下的。

比如: setServletContextForTemplateLoading(context, "/ftl") 就是 /WebRoot/ftl目录。

 

第一种基于类路径的方法有点小坑,其实看下源码代码就知道了。

比如 :

Configuration cfg = new Configuration();cfg.setClassForTemplateLoading(FreemarkerUtil.class, "/template");cfg.getTemplate("Base.ftl");

其中FreemarkerUtil所在的包路径是:  org.foo.util

那么获得是模板文件就是  ${projectPath}/org/foo/util/template 。

 

这里注意一下第二个参数需要以 "/" 开头。

 

其实我们看下源码就知道了:

 

 

可以看到,prefix如果最后1个字符不是 "/" 会默认加上。 但是第一个不是 "/" 字符 并不会加上。

 

最终的具体生成代码是通过FMParser这个类生成的。  FMParser是使用JavaCC写的,由于时间有限,就没有具体研究了。

参考资料

http://my.oschina.net/flashsword/blog/160747