posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          巧用Freemarker的自定義方法

          Posted on 2010-03-03 09:53 Gavin.lee 閱讀(528) 評(píng)論(0)  編輯  收藏 所屬分類: FreeMarker
          原文: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)置方法庫。
          主站蜘蛛池模板: 连平县| 宜兰市| 洪湖市| 宣化县| 明水县| 阿瓦提县| 石阡县| 高碑店市| 兴义市| 嘉义市| 阳曲县| 建昌县| 灌阳县| 元谋县| 淳化县| 准格尔旗| 铜鼓县| 涪陵区| 城固县| 普宁市| 思茅市| 铜梁县| 黄冈市| 望江县| 浙江省| 锦州市| 湾仔区| 清涧县| 富顺县| 泗水县| 乡宁县| 贵州省| 塔河县| 岳池县| 新巴尔虎左旗| 鸡泽县| 金溪县| 德阳市| 营山县| 阆中市| 大渡口区|