在做乙個cms**時,要列出**欄目,比如有新聞,科技,體育,財經等欄目。欄目內容存放在資料庫中。
//沒有迴圈變數
<@user_def_dir_exp param1=val1 param2=val2 ... paramn=valn/>
//有迴圈變數
<@user_def_dir_exp param1=val1 param2=val2 ... paramn=valn ;lv1, lv2, ..., lvn/>
cms_chanel_list指令的作用是按傳入的引數count找出指定數量的欄目,並且過濾掉名字為「體育」的欄目。
<@cms_chanel_list
count=5
exclude="體育">
<#list
chllist
asc>
href="#"
target="_self">
$span>
a>
dt>
#list>
@cms_chanel_list>
首先要實現templatedirectivemodel介面。
public
class chanellistdirective implements templatedirectivemodel
int count = 0;
string excludestr = null;
// 處理傳入的引數
for (object key : params.keyset())
if (name.equalsignorecase("exclude"))
}listchanlelist = chaneldao.loadall();
listlist = new arraylist<>();
for (int i = 0; i < count && i < chanlelist.size(); i++)
if (body != null)
}}
需要繫結該指令為cms_chanel_list
...
"chanellistdirective" class="com.ydoing.web.directives.chanellistdirective"/>
"freemarkerconfig" class="org.springframework.web.servlet.view.freemarker.freemarkerconfigurer">
"templateloaderpath" value="/web-inf/t/cms/www/default/" />
"defaultencoding" value="utf-8" />
"freemarkervariables">
"cms_chanel_list" value-ref="chanellistdirective"/>
...
freemarker 自定義指令
自定義指令可以使用,marco指令來進行定義 巨集 是有乙個變數名的模板片段,在模板中使用巨集作為自定義指令,這樣就能供其他頁面使用。hello joe macro 指令只是用來建立巨集變數,自身不輸出任何內容,所以就會有乙個名為 greet 的變數。在 macro greet 和 之間的內容 稱為...
FreeMarker自定義指令
摘要 freemarker自定義指令就像struts2的set標籤,為了好理解,也可以認為是定義乙個方法,就像js的function.在freemarker中的這個標籤就是macro。在定義乙個指令的時候,可以指定引數,當然也可以不指定,這裡要注意了,我這裡只貼出模板檔案及輸出結果,freemark...
FreeMarker自定義指令
摘要 freemarker自定義指令就像struts2的set標籤,為了好理解,也可以認為是定義乙個方法,就像js的function.在freemarker中的這個標籤就是macro。在定義乙個指令的時候,可以指定引數,當然也可以不指定,這裡要注意了,我這裡只貼出模板檔案及輸出結果,freemark...