zoukankan      html  css  js  c++  java
  • freemarker报 java.io.FileNotFoundException:及TemplateLoader使用

      使用过freemarker的肯定其见过如下情况: 

    1 java.io.FileNotFoundException: Template xxx.ftl not found.  



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

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

    1 ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader 


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

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

    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 
      此是通过指定类所在的目录来指定模板所在根路径,即指定类在哪个目录,那么这个目录就是加载模板文件的根目录,如下: 

     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来配置你模板文件的根目录,如下: 

    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目录下开始找。 

    原文:http://zwllxs.iteye.com/blog/996244

  • 相关阅读:
    Expedition---POJ
    LIS的优化算法O(n log n)
    Super Jumping! Jumping! Jumping! ---HDU
    数据库连接判断
    android stuido控件
    sql查询语句
    c# 字符串操作
    windows操作
    C# sql操作
    datagridview
  • 原文地址:https://www.cnblogs.com/panchanggui/p/9724700.html
Copyright © 2011-2022 走看看