原文:http://gzhzh.javaeye.com/blog/433273
一直以來,都想在FTL模板頁面里應(yīng)用java的方法。
“要想使用Freemarker支持的自定義方法,需要實(shí)現(xiàn)freemarker.template.TemplateMethodModel接口,然后將方法對(duì)象放入到Freemarker的數(shù)據(jù)模型中,這樣在ftl文件中便可以像使用Freemarker內(nèi)置方法一樣使用該方法了。”
具體的需求方法:
package yixun.wap.tools;

import java.util.List;
import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;

public class EncodeURLMethod implements TemplateMethodModel {

/**
* 執(zhí)行方法
* @param argList 方法參數(shù)列表
* @return Object 方法返回值
* @throws TemplateModelException
*/
public Object exec(List arg0) throws TemplateModelException {
if(arg0.size() != 1) { //限定方法中必須且只能傳遞一個(gè)參數(shù)
throw new TemplateModelException("template exception");
}
String encode = java.net.URLEncoder.encode((String) arg0.get(0));
return encode;
}
}
將EncodeURLMethod的實(shí)例對(duì)象放入模型中輸出:
body.put("encodeURL", new EncodeURLMethod());
在Freemarker模版文件中應(yīng)用:
${body.encodeURL("時(shí)時(shí)彩")}
得到的就是經(jīng)過encoder的數(shù)據(jù)串了。這樣用起來就非常方便了,可以根據(jù)業(yè)務(wù)的需求,擴(kuò)大FreeMarker的內(nèi)置方法庫。
一直以來,都想在FTL模板頁面里應(yīng)用java的方法。
“要想使用Freemarker支持的自定義方法,需要實(shí)現(xiàn)freemarker.template.TemplateMethodModel接口,然后將方法對(duì)象放入到Freemarker的數(shù)據(jù)模型中,這樣在ftl文件中便可以像使用Freemarker內(nèi)置方法一樣使用該方法了。”
具體的需求方法:
























將EncodeURLMethod的實(shí)例對(duì)象放入模型中輸出:

在Freemarker模版文件中應(yīng)用:

得到的就是經(jīng)過encoder的數(shù)據(jù)串了。這樣用起來就非常方便了,可以根據(jù)業(yè)務(wù)的需求,擴(kuò)大FreeMarker的內(nèi)置方法庫。