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


自定義指令:

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的配置文件中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM