freemarker -自定义指令
自定義指令可以使用,Marco指令來進行定義?
宏?是有一個變量名的模板片段,在模板中使用宏作為自定義指令,這樣就能供其他頁面使用。
<#macro greet><font size="+2">Hello Joe!</font> </#macro>macro??指令只是用來創建宏變量,自身不輸出任何內容, 所以就會有一個名為?greet?的變量。在?<#macro greet>?和?</#macro>?之間的內容 (稱為?宏定義體) 將會在使用該變量作為指令時執行。可以在FTL標記中通過?@代替#來使用自定義指令。 使用變量名作為指令名。而且,自定義指令的?結束標記?也是需要的。
<@greet></@greet> 這樣被稱為宏的引用 參數在?macro?指令中,宏名稱的后面位置是用來定義參數的。這里我們僅在?greet?宏中定義一個參數,person:
<#macro greet person><font size="+2">Hello ${person}!</font> </#macro>使用:
<@greet person="Fred"/> and <@greet person="Batman"/>輸出:
<font size="+2">Hello Fred!</font>and <font size="+2">Hello Batman!</font>自定義指令可以有多個參數。如下所示,再添加一個新的參數?color:
<#macro greet person color><font size="+2" color="${color}">Hello ${person}!</font> </#macro>那么,這個宏就可以這樣來使用:
<@greet person="Fred" color="black"/>參數的順序不重要,下面的這個和上面的含義也是相同的:
<@greet color="black" person="Fred"/>當調用這個宏的時候,只能使用在?macro?指令中定義的參數(本例中是:person?和?color)。 那么當你嘗試?<@greet person="Fred" color="black" background="green"/>?的時候就會發生錯誤,因為并沒有在?<#macro...>?中提及參數?background。
同時也必須給出在宏中定義所有參數的值。如果嘗試?<@greet person="Fred"/>?時也會發生錯誤, 因為忘記指定?color的值了。 很多情況下需要給一個參數指定一個相同的值,所以我們僅僅想在這個值發生變化后重新賦給變量。 那么要達到這個目的,在macro指令中必須這么來指定變量:?param_name=usual_value。 例如,當沒有特定值的時候,我們想要給?color?賦值為?"black",那么?greet?指令就要這么來寫:
<#macro greet person color="black"><font size="+2" color="${color}">Hello ${person}!</font> </#macro>現在,我們這么使用宏就可以了:?<@greet person="Fred"/>,因為它和?<@greet person="Fred" color="black"/>?是相等的, 這樣參數?color?的值就是已知的了。 如果想給?color?設置為?"red", 那么就寫成:?<@greet person="Fred" color="red"/>, 這時macro?指令就會使用這個值來覆蓋之前設置的通用值, 參數?color?的值就會是?"red"?了。
總結
以上是生活随笔為你收集整理的freemarker -自定义指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#与Javascript变量、函数之间
- 下一篇: 【计算机组成原理】总线