FreeMarker 用户自定义指令@(3.4)
調(diào)用方法:
①<@user_def_dir_exp param1=val1 param2=val2 ... paramN=valN/> (xml風(fēng)格)
②<@user_def_dir_exp param1=val1 param2=val2 ... paramN=valN ;lv1, lv2, ..., lvN/> ?(包含循環(huán)變量)
③<@user_def_dir_exp ...>...</@user_def_dir_exp>(使用結(jié)束標(biāo)簽1)
④<@user_def_dir_exp ...>...</@>(使用結(jié)束標(biāo)簽2)
說(shuō)明:
參數(shù)的數(shù)量可以是 0(也就是沒(méi)有參數(shù))。參數(shù)的順序并不重要(除非你使用了位置參數(shù)傳遞)。參數(shù)名稱必須唯一。在參數(shù)名中小寫(xiě)和大寫(xiě)的字母被認(rèn)為是不同的字母(也就是 Color 和 color 是不同的)。
調(diào)用有參數(shù)的宏:
結(jié)束標(biāo)簽:
你可以在結(jié)束標(biāo)簽中忽略 user_def_dir_exp 。也就是說(shuō),你可以寫(xiě) </@> 來(lái)替代</@anything> 。這個(gè)規(guī)則當(dāng)表達(dá)式 user_def_dir_exp 太復(fù)雜時(shí)非常有用,因?yàn)槟悴恍枰诮Y(jié)束標(biāo)簽中重復(fù)表達(dá)式。
位置參數(shù)傳遞:
位置參數(shù)傳遞(如 <@heading "Preface", 1/> )是正常命名參數(shù)傳遞(如<@heading title="Preface" level=1/> )的速記形式,這里忽略了參數(shù)的名稱。如果自定義指令只有一個(gè)參數(shù),或者對(duì)于經(jīng)常使用的自定義指令它參數(shù)的順序很好記憶,速記形式應(yīng)該被應(yīng)用。如果你使用參數(shù)名稱,那順序就不重要了。
循環(huán)變量:
自定義指令創(chuàng)建循環(huán)變量(和 list 指令相似)。當(dāng)你調(diào)用指令(如 <#list foos as foo>...</#list> 中的 foo )時(shí)循環(huán)變量的名稱就給定了,而變量的值是由指令本身設(shè)置的。在自定義指令的情形下,語(yǔ)法是循環(huán)變量的名稱在分號(hào)之后給定。
<#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>注意由自定義指令創(chuàng)建的循環(huán)變量數(shù)量和分號(hào)之后指定的循環(huán)變量數(shù)量需要不匹配。也就是說(shuō),如果你對(duì)重復(fù)是否是最后一個(gè)不感興趣,你可以簡(jiǎn)單來(lái)寫(xiě):
<@repate count=4 ; x> ${x}. Something... </@repate > 或者 <@repeat count=4> Something... </@repeat >?
轉(zhuǎn)載于:https://www.cnblogs.com/kjitboy/p/5094341.html
總結(jié)
以上是生活随笔為你收集整理的FreeMarker 用户自定义指令@(3.4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: FreeMarker模板文件的组成(2)
- 下一篇: ARC内存管理机制详解