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")}
相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26
87201943 2020-02-21