自定義指令可以使用,marco指令來進行定義
巨集 是有乙個變數名的模板片段,在模板中使用巨集作為自定義指令,這樣就能供其他頁面使用。
hello joe!
macro
指令只是用來建立巨集變數,自身不輸出任何內容, 所以就會有乙個名為 greet
的變數。在 <#macro greet>
和 之間的內容 (稱為 巨集定義體) 將會在使用該變數作為指令時執行。可以在ftl標記中通過 @
代替#來使用自定義指令。 使用變數名作為指令名。而且,自定義指令的 結束標記 也是需要的。
指令中,巨集名稱的後面位置是用來定義引數的。這裡我們僅在 greet
巨集中定義乙個引數,person
: hello $!
使用:輸出:
and hello batman!
自定義指令可以有多個引數。如下所示,再新增乙個新的引數 color
: hello $!
那麼,這個巨集就可以這樣來使用:
引數的順序不重要,下面的這個和上面的含義也是相同的:
當呼叫這個巨集的時候,只能使用在 macro
指令中定義的引數(本例中是:person
和 color
)。 那麼當你嘗試 <@greet person="fred" color="black" background="green"/>
的時候就會發生錯誤,因為並沒有在 <#macro
...> 中提及引數 background
。同時也必須給出在巨集中定義所有引數的值。如果嘗試 <@greet person="fred"/>
時也會發生錯誤, 因為忘記指定 color
的值了。 很多情況下需要給乙個引數指定乙個相同的值,所以我們僅僅想在這個值發生變化後重新賦給變數。 那麼要達到這個目的,在macro
指令中必須這麼來指定變數: param_name
=usual_value。 例如,當沒有特定值的時候,我們想要給 color
賦值為 "black"
,那麼 greet
指令就要這麼來寫:
hello $!
現在,我們這麼使用巨集就可以了: <@greet person="fred"/>
,因為它和 <@greet person="fred" color="black"/>
是相等的, 這樣引數 color
的值就是已知的了。 如果想給 color
設定為 "red"
, 那麼就寫成: <@greet person="fred" color="red"/>
, 這時macro
指令就會使用這個值來覆蓋之前設定的通用值, 引數 color
的值就會是 "red"
了。
Freemarker自定義指令
在做乙個cms 時,要列出 欄目,比如有新聞,科技,體育,財經等欄目。欄目內容存放在資料庫中。沒有迴圈變數 user def dir exp param1 val1 param2 val2 paramn valn 有迴圈變數 user def dir exp param1 val1 param2 v...
FreeMarker自定義指令
摘要 freemarker自定義指令就像struts2的set標籤,為了好理解,也可以認為是定義乙個方法,就像js的function.在freemarker中的這個標籤就是macro。在定義乙個指令的時候,可以指定引數,當然也可以不指定,這裡要注意了,我這裡只貼出模板檔案及輸出結果,freemark...
FreeMarker自定義指令
摘要 freemarker自定義指令就像struts2的set標籤,為了好理解,也可以認為是定義乙個方法,就像js的function.在freemarker中的這個標籤就是macro。在定義乙個指令的時候,可以指定引數,當然也可以不指定,這裡要注意了,我這裡只貼出模板檔案及輸出結果,freemark...