打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
freemarker报 java.io.FileNotFoundException:及Te...
使用过freemarker的肯定其见过如下情况:
Java代码  
  1. java.io.FileNotFoundException: Template xxx.ftl not found.  


模板找不到。可能你会认为我明明指定了文件,并且文件存在,但是为什么就是说找不到呢?
经过研究官方的API,原来freemarker在加载模板时,建议使用TemplateLoader,通过TemplateLoader指定从哪个目录开始加载模板,并且把模板加载在缓存中。

   API的TemplateLoader是一个接口,他有如下几个实现类:

Java代码  
  1. ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader  


   顾名思义,我们能从类名中猜想到freemarker的模板加载机制,举例说明两个:

1:FileTemplateLoader
  此是文件模板加载器,此即可以通过文件的绝对路径加载模板,如:

Java代码  
  1. TemplateLoader templateLoader=null;  
  2.            String path="";  
  3.              
  4.            //使用FileTemplateLoader  
  5.           templateLoader=new FileTemplateLoader(new File("项目根路径"));  
  6.           path="/WEB-INF/classes/com/xxx/tag/templates/page/xxx.ftl";  
  7.                          
  8.            cfg.setTemplateLoader(templateLoader);  
  9.            Template t=cfg.getTemplate(path,"UTF-8");  


2:ClassTemplateLoader
  此是通过指定类所在的目录来指定模板所在根路径,即指定类在哪个目录,那么这个目录就是加载模板文件的根目录,如下:

Java代码  
  1. Configuration cfg = new Configuration();  
  2.               
  3.             TemplateLoader templateLoader=null;  
  4.             String path="";  
  5.               
  6.             templateLoader=new ClassTemplateLoader(PageTag.class,"templates/page/");  
  7.             path="standardd.ftl";  
  8.               
  9.             cfg.setTemplateLoader(templateLoader);  
  10.             Template t=cfg.getTemplate(path,"UTF-8");  


此即表示比PageTag类所在的目录开始找,找这个目录下的templates/page/目录,

其它的加载器原理同上,

如果你是web项目,并且使用了spring,那么。你还可以通过spring来配置你模板文件的根目录,如下:


Java代码  
  1. <bean id="freemarkerConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">  
  2.     <property name="templateLoaderPath" value="/WEB-INF" />  
  3.      <property name="freemarkerSettings">  
  4.         <props>         
  5.             <prop key="defaultEncoding">UTF-8</prop>         
  6.         </props>         
  7.     </property>  
  8. </bean>  


此即表示从WEB-INF目录下开始找。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
模板加载
Java模板引擎 FreeMarker
freemarker(1)老紫竹的第一个freemaker程序 - freemarker ...
freemarker加载模板
Spring发送邮件简单实例
Java Web开发——FreeMarker模板使用方法讲解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服