使用Freemarker创建自己的自定义助手?

时间:2010-06-28 16:37:42

标签: java spring spring-mvc freemarker

从我的控制器中设置我的模型并查看:

ModelAndView mav = new ModelAndView();

mav.setView("index");

mav.addObject("user", user);
mav.addObject("someCollection", someCollection);

return mav;

现在我想创建一个帮助器类型对象,它将someCollection和用户对象作为参数。

我的助手功能会输出一些HTML等,这可能吗?

3 个答案:

答案 0 :(得分:4)

您可以使用FTLJava编写宏和指令,将它们公开给您的模板,并以与通常使用内置宏/指令相同的方式调用它们。

答案 1 :(得分:2)

没有什么可以阻止你放置任何Java对象,例如一个帮助器实例,到模型,然后使用如下语法调用它的方法:${helper.myMethod(arg)}

答案 2 :(得分:0)

/**
 * Add logotype logotype1AsBase64.
 * @return
 * @throws IOException 
@ModelAttribute("logotype1AsBase64")
public String getLogotype() 
        throws IOException {
    return logotypeService.getLogotype();
}
*/

@ModelAttribute
public void addAttributes(Model model) throws IOException {
    //...
    model.addAttribute("logotype1AsBase64", logotypeCacheServ.getImage("logotypeInEnglish1From20190101.png"));
    //...
}

然后使用它:

<img src="<#if locale == 'specificLocale'>${logotype1AsBase64}></#if>" alt="description for picture">

如果设置是这样,模型属性可以包含除base64之外的更多html徽标。