freemarker實現自定義指令和自定義函數
自定義指令:
1.指令在前臺實現
<#macro name param1,param2,param3...paramN>
</#macro>
2.指令在後臺實現
1.實現TemplateDirectiveModel接口
參數說明:
- environment : 是環境變量,在這裏我們可以拿到 通過 environment.getOut 拿到 Write 。
- map :這裏我們可以等到參數,這裏的參數是以 鍵值對的形式存在的。
- templateModel : 是所以數據類型的頂級接口,我們 可以通過 templateMole[i] 通過這個i變量來返回我們指定的第幾個參數的返回值。
- 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實現自定義指令和自定義函數