1. 可以在FTL中定义函数,调用context(一个全局类)中某些对象的方法,
例如:${getCode(bean.paramtype)},getCode就是自定义的一个函数:
<#function getCode id=0>
<#return _global.getCodelistName(id)>
</#function>
调用context中_global对象的一个getCodelistName方法。
_global定义:
public static void initialize(ServletContextEvent event){
event.getServletContext().setAttribute("_global", Global.instance());
}
2. 可以在FTL中定义宏,把一些通用的、使用率比较高的FTL代码抽象出接口,提高复用性和代码整洁度,
例如:<@options type="paramtype" value=property.id />,@options是自定义的一个宏,有type和value两个参数,用它们来生成<option>列表。
<#macro options type value=0>
<#list _global.getSysCodelists(type) as item>
<option value="${item.id}" ${(item.id==value)?string("selected","")}>
${item.listname}
</option>
</#list>
</#macro>