Freemarker自定義指令

2021-08-04 19:19:23 字數 1502 閱讀 3081

在做乙個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...