6、freemarker自定义指令

来源:互联网 发布:select ajax json 联动 编辑:程序博客网 时间:2024/04/30 06:57
自定义函数分为以下几步:
1、继承 TemplateMethodModelEx类
  1. package com.xuzengqiang.freemarker.framework;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.omg.CORBA.INTF_REPOS;  
  6.   
  7. import freemarker.template.SimpleNumber;  
  8. import freemarker.template.SimpleScalar;  
  9. import freemarker.template.TemplateMethodModelEx;  
  10. import freemarker.template.TemplateModel;  
  11. import freemarker.template.TemplateModelException;  
  12.   
  13. @SuppressWarnings("all")  
  14. public class RepeatMethod implements TemplateMethodModelEx  
  15. {  
  16.   
  17.     @Override  
  18.     public TemplateModel exec(List list) throws TemplateModelException  
  19.     {  
  20.         String str=list.get(0).toString();  
  21.         int num=Integer.valueOf(list.get(1).toString());  
  22.         StringBuffer result=new StringBuffer();  
  23.         for(int i=0;i<num;i++)  
  24.         {  
  25.             result.append(str);  
  26.         }  
  27.         return new SimpleScalar(result.toString());  
  28.     }  
  29.   
2、暴露节点
修改配置文件
 <!-- 配置freeMarker的模板路径 --> 
 <bean id="freemarkerConfig" class="com.egova.web.freemarker.PluginFreeMarkerConfigurer"> 
  <property name="freemarkerSettings" ref="freemarkerConfiguration" /> 
  <property name="templateLoaderPath" value="classpath*:template" /> 
  <property name="freemarkerVariables"> 
   <map> 
    <entry key="repeat" value-ref="repreatMethod" /> 
   </map> 
  </property> 
 </bean> 
  
 <bean id="repreatMethod" class="com.egova.web.freemarker.RepeatMethod" /> 

3、使用
  1. <#assign str="love">  
  2. ${repeat(str,3)}  
在控制台打印的就是:
    1. lovelovelove 
0 0