实现Function
- byteWriter 输出流
- template 模板本身
- gt GroupTemplate
- globalVar 该模板对应的全局变量
- safeOutput 模板当前是否处于安全输出模式
- 其他属性建议不熟悉的开发人员不要乱动
使用普通的java类
尽管实现Function对于模板引擎来说,是效率最高的方式,但考虑到很多系统只有util类,这些类里的方法仍然可以注册为模板函数。其规则很简单,就是该类的所有public方法。如果还需要Context 变量,则需要在方法最后一个参数加上Context即可,如
public String print(Object a, Context ctx){
}
注意
- 从beetl效率角度来讲,采用普通类效率不如实现Function调用
- 采用的普通java类尽量少同名方法。这样效率更低。beetl调用到第一个适合的同名方法。而不像java那样找到最匹配的
- 方法名支持可变数组作为参数
- 方法名最后一个参数如果是Context,则beetl会传入这个参数。
使用模板文件作为方法
如下root/functions/page.fn
则在模板中
<%
%>
在任何模板里都可以调用:
hello time is ${now(),'yyyy-MM-dd'}
也可以在functions建立子目录,这样function则具有namespace,其值就是文件夹名