freemarker 自定义指令

    
freemarker是一款模板引擎,自己定义了很多指令。
如:
if指令
  <#if condition>
      ....
  <#elseif condition2>
     ….
  <#else>
    ...
  </#if>
 
switch、case、default、break指令
  <#switch value>
     <#case refValue>
        ...
        <#bread>
     <#case refValue>
        ...
        <#bread>
     <#default>
        ...
  </#switch>
 
list指令
 
  <#list sequence as item>
   ...
  </#list>
等等。同时,还可以制定化一些业务指令。自定义指令把’#’换成了’@’,样式为:
 
<@MyDirective>
   ….
</@MyDirective>
 
 
自定义指令第一步,需要定义一个指令处理类。该指令处理类,需要继承自接口freemarker.template.TemplateDirectiveModel  。
如:
 
public class MyDirective  implements TemplateDirectiveModel {
 
  public void execute(Environment env,
            @SuppressWarnings("rawtypes") Map params, TemplateModel[] loopVars,
            TemplateDirectiveBody body) throws TemplateException, IOException {
     
env 是模板引擎的环境对象
params  是指令设定的属性名和属性值组成的map,如:<@MyDirective  aaa=“A”  bbb=“B”>中的  aaa:A ,bbb:B
body 表示标签内部内容的输出
           ....
  }
}

 

 
第二步 ,创建对象,添加到freemarker指令集合内部。
<bean id="freemarkerConfig"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    ....
    <property name="freemarkerVariables">  
      <map>  
          <entry key=“MyDirective" value-ref=“MyDirective" />
          ....
      </map>  
  </property>
</bean>
<bean id=“MyDirective" class="com.sten.directive.MyDirective"/>

 

 
最后就可以在项目中使用该指令了 
 
 
 
 
 
 
 
posted @ 2016-08-18 21:27  li.zhiliang  阅读(301)  评论(0)    收藏  举报