使用freemarker 导出word
来源:互联网 发布:sql convert 编辑:程序博客网 时间:2024/06/02 23:46
使用过freemarker的肯定其见过如下情况:
模板找不到。可能你会认为我明明指定了文件,并且文件存在,但是为什么就是说找不到呢?
经过研究官方的API,原来freemarker在加载模板时,建议使用TemplateLoader,通过TemplateLoader指定从哪个目录开始加载模板,并且把模板加载在缓存中。
API的TemplateLoader是一个接口,他有如下几个实现类:
顾名思义,我们能从类名中猜想到freemarker的模板加载机制,举例说明两个:
1:FileTemplateLoader
此是文件模板加载器,此即可以通过文件的绝对路径加载模板,如:
2:ClassTemplateLoader
此是通过指定类所在的目录来指定模板所在根路径,即指定类在哪个目录,那么这个目录就是加载模板文件的根目录,如下:
此即表示比PageTag类所在的目录开始找,找这个目录下的templates/page/目录,
其它的加载器原理同上,
如果你是web项目,并且使用了spring,那么。你还可以通过spring来配置你模板文件的根目录,如下:
此即表示从WEB-INF目录下开始找。
- java.io.FileNotFoundException: Template xxx.ftl not found.
java.io.FileNotFoundException: Template xxx.ftl not found.
模板找不到。可能你会认为我明明指定了文件,并且文件存在,但是为什么就是说找不到呢?
经过研究官方的API,原来freemarker在加载模板时,建议使用TemplateLoader,通过TemplateLoader指定从哪个目录开始加载模板,并且把模板加载在缓存中。
API的TemplateLoader是一个接口,他有如下几个实现类:
- ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader
ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader
顾名思义,我们能从类名中猜想到freemarker的模板加载机制,举例说明两个:
1:FileTemplateLoader
此是文件模板加载器,此即可以通过文件的绝对路径加载模板,如:
- TemplateLoader templateLoader=null;
- String path="";
- //使用FileTemplateLoader
- templateLoader=new FileTemplateLoader(new File("项目根路径"));
- path="/WEB-INF/classes/com/xxx/tag/templates/page/xxx.ftl";
- cfg.setTemplateLoader(templateLoader);
- Template t=cfg.getTemplate(path,"UTF-8");
TemplateLoader templateLoader=null; String path=""; //使用FileTemplateLoader templateLoader=new FileTemplateLoader(new File("项目根路径")); path="/WEB-INF/classes/com/xxx/tag/templates/page/xxx.ftl"; cfg.setTemplateLoader(templateLoader); Template t=cfg.getTemplate(path,"UTF-8");
2:ClassTemplateLoader
此是通过指定类所在的目录来指定模板所在根路径,即指定类在哪个目录,那么这个目录就是加载模板文件的根目录,如下:
- Configuration cfg = new Configuration();
- TemplateLoader templateLoader=null;
- String path="";
- templateLoader=new ClassTemplateLoader(PageTag.class,"templates/page/");
- path="standardd.ftl";
- cfg.setTemplateLoader(templateLoader);
- Template t=cfg.getTemplate(path,"UTF-8");
Configuration cfg = new Configuration(); TemplateLoader templateLoader=null; String path=""; templateLoader=new ClassTemplateLoader(PageTag.class,"templates/page/"); path="standardd.ftl"; cfg.setTemplateLoader(templateLoader); Template t=cfg.getTemplate(path,"UTF-8");
此即表示比PageTag类所在的目录开始找,找这个目录下的templates/page/目录,
其它的加载器原理同上,
如果你是web项目,并且使用了spring,那么。你还可以通过spring来配置你模板文件的根目录,如下:
- <bean id="freemarkerConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
- <property name="templateLoaderPath" value="/WEB-INF" />
- <property name="freemarkerSettings">
- <props>
- <prop key="defaultEncoding">UTF-8</prop>
- </props>
- </property>
- </bean>
<bean id="freemarkerConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"><property name="templateLoaderPath" value="/WEB-INF" /> <property name="freemarkerSettings"><props> <prop key="defaultEncoding">UTF-8</prop> </props> </property></bean>
此即表示从WEB-INF目录下开始找。
- 使用freemarker 导出word
- 使用FreeMarker导出Word
- 使用freemarker导出Word
- 使用freemarker导出Word
- 使用 freemarker 导出 word
- 使用freemarker导出word
- 【freemarker】使用模板导出word
- 使用freemarker导出word文档
- 使用FreeMarker自定义导出word
- 使用freemarker实现word导出
- 使用FreeMarker导出word文档
- java使用freemarker导出word
- 使用freemarker 导出word供别人下载
- java使用Freemarker+xml导出word
- Java使用freemarker导出word模板
- java使用freemarker模版导出分页word
- Java使用freemarker导出word文档
- java 使用freemarker 导出word 和图片
- 第十二周实验报告(一)
- windows下安装cygwin及配置
- 用shell而不用perl/python的理由
- ArcGIS Server For Java10.0 TOKEN配置问题
- 银联CUPS系统 缔造无数“神话”
- 使用freemarker 导出word
- ListView的Adapter使用 之 初学ArrayAdapter
- MD5 Checksum
- HDU 1166 敌兵布阵
- JAVA classes 下文件读取
- 好几天没来了
- Spring 运行时获得配置文件中参数的方法
- js获取当前浏览器版本
- linux tools