1. 程式人生 > >freemarker實現自定義指令和自定義函數

freemarker實現自定義指令和自定義函數

數據 dir variables macro 內置 引擎 eem fig turn

自定義指令:

1.指令在前臺實現

  <#macro name param1,param2,param3...paramN>

  </#macro>

2.指令在後臺實現

1.實現TemplateDirectiveModel接口

技術分享

參數說明:
    1. environment : 是環境變量,在這裏我們可以拿到 通過 environment.getOut 拿到 Write 。
    2. map :這裏我們可以等到參數,這裏的參數是以 鍵值對的形式存在的。
    3. templateModel : 是所以數據類型的頂級接口,我們 可以通過 templateMole[i] 通過這個i變量來返回我們指定的第幾個參數的返回值。
    4. templateBody : 是標簽開始和結束的 內容 ,通過這個對象的 render()方法我可以接著執行 自定義標簽裏的 其他標簽(freemarker內置標簽或者我們自定義標簽)

2.配置實現類bean到spring bean xml配置文件

技術分享

3.將實現類bean設置到freemarkerConfig全局變量中

  <property name="freemarkerVariables">

    <map>

      <entry key="XXX" value="beanID" />

    </map>

  </property>

......

或者<entry key="XXX">

    <bean class="com.XXX" />

  </entry>

4.ftl文件中訪問方式

<@XXX name="XXX",...></@XXX>

自定義函數:

1.定義在前臺

  <#function name param1,param2,param3...paramN> ... <#return returnValue> </#function>

2.定義在後臺

  1.實現TemplateMethodModelEx或者TemplateMethodModel接口

TemplateMethodModelEx擴展了TemplateMethodModel,其暗示FTL引擎,形式參數應該直接以TemplateModel-s形式放入java.util.list。否則將會以String-s形式放入List

2.將實例放入數據模型

mav.add("functionName",new XXX());

也可以放入spring-freemarker的配置文件中

freemarker實現自定義指令和自定義函數