无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

巧用Freemarker的自定义方法

Posted on 2010-03-03 09:53 Gavin.lee 阅读(510) 评论(0)  编辑  收藏 所属分类: FreeMarker
原文:http://gzhzh.javaeye.com/blog/433273

一直以来,都想在FTL模板页面里应用java的方法。
“要想使用Freemarker支持的自定义方法,需要实现freemarker.template.TemplateMethodModel接口,然后将方法对象放入到Freemarker的数据模型中,这样在ftl文件中便可以像使用Freemarker内置方法一样使用该方法了。”

具体的需求方法:
package yixun.wap.tools;

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

public class EncodeURLMethod implements TemplateMethodModel {

    
/**  
     * 执行方法  
     * 
@param argList 方法参数列表  
     * 
@return Object 方法返回值  
     * 
@throws TemplateModelException  
     
*/

    
public Object exec(List arg0) throws TemplateModelException {
        
if(arg0.size() != 1{    //限定方法中必须且只能传递一个参数
            throw new TemplateModelException("template exception");
        }

        
        String encode 
= java.net.URLEncoder.encode((String) arg0.get(0));
        
return encode;
    }

}


将EncodeURLMethod的实例对象放入模型中输出:
body.put("encodeURL"new EncodeURLMethod());

在Freemarker模版文件中应用:
${body.encodeURL("时时彩")}

得到的就是经过encoder的数据串了。这样用起来就非常方便了,可以根据业务的需求,扩大FreeMarker的内置方法库。

只有注册用户登录后才能发表评论。


网站导航: