FreeMarker 用户自定义指令@(3.4)
調用方法:
①<@user_def_dir_exp param1=val1 param2=val2 ... paramN=valN/> (xml風格)
②<@user_def_dir_exp param1=val1 param2=val2 ... paramN=valN ;lv1, lv2, ..., lvN/> ?(包含循環變量)
③<@user_def_dir_exp ...>...</@user_def_dir_exp>(使用結束標簽1)
④<@user_def_dir_exp ...>...</@>(使用結束標簽2)
說明:
參數的數量可以是 0(也就是沒有參數)。參數的順序并不重要(除非你使用了位置參數傳遞)。參數名稱必須唯一。在參數名中小寫和大寫的字母被認為是不同的字母(也就是 Color 和 color 是不同的)。
調用有參數的宏:
結束標簽:
你可以在結束標簽中忽略 user_def_dir_exp 。也就是說,你可以寫 </@> 來替代</@anything> 。這個規則當表達式 user_def_dir_exp 太復雜時非常有用,因為你不需要在結束標簽中重復表達式。
位置參數傳遞:
位置參數傳遞(如 <@heading "Preface", 1/> )是正常命名參數傳遞(如<@heading title="Preface" level=1/> )的速記形式,這里忽略了參數的名稱。如果自定義指令只有一個參數,或者對于經常使用的自定義指令它參數的順序很好記憶,速記形式應該被應用。如果你使用參數名稱,那順序就不重要了。
循環變量:
自定義指令創建循環變量(和 list 指令相似)。當你調用指令(如 <#list foos as foo>...</#list> 中的 foo )時循環變量的名稱就給定了,而變量的值是由指令本身設置的。在自定義指令的情形下,語法是循環變量的名稱在分號之后給定。
<#macro repeat count> <#list 1..count as x> <#nested x, x/2, x==count> </#list> </#macro><@repeat count=4 ; c, halfc, last> ${c}. ${halfc}<#if last> Last!</#if> </@repeate><@repeat count=4 ; x, last> ${x}. Something... <#if last> This was the last!</#if>注意由自定義指令創建的循環變量數量和分號之后指定的循環變量數量需要不匹配。也就是說,如果你對重復是否是最后一個不感興趣,你可以簡單來寫:
<@repate count=4 ; x> ${x}. Something... </@repate > 或者 <@repeat count=4> Something... </@repeat >?
轉載于:https://www.cnblogs.com/kjitboy/p/5094341.html
總結
以上是生活随笔為你收集整理的FreeMarker 用户自定义指令@(3.4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeMarker模板文件的组成(2)
- 下一篇: Android中Cursor类的概念和用