Freemarker的自定义方法

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

/**  
* Freemarker自定义方法
* 实现response.encodeURL(url)功能
*/
public class EncodeURLMethod implements TemplateMethodModel {

private HttpServletResponse response;

/**
* 带参数的构造函数
* @param response HttpServletResponse对象
*/
public EncodeURLMethod(HttpServletResponse response)
{
this.response=response;
}

/**
* 执行方法
* @param argList 方法参数列表
* @return Object 方法返回值
* @throws TemplateModelException
*/
public Object exec(List argList) throws TemplateModelException {
if(argList.size()!=1) //限定方法中必须且只能传递一个参数
{
throw new TemplateModelException("Wrong arguments!");
}
//返回response.encodeURL执行结果
return response.encodeURL((String)argList.get(0));
}
}


使用:

@Controller
public class HelloWord {
@RequestMapping("/fltMethod")
public String templateMethodModel(Modelmodel,HttpServletResponse response)
{
model.addAttribute("encodeURL", new EncodeURLMethod(response));
return ("fltMethod.ftl");
}
}



${encodeURL("/news/showNews.sf?id=123456")} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值