实现Function

    • byteWriter 输出流
    • template 模板本身
    • gt GroupTemplate
    • globalVar 该模板对应的全局变量
    • safeOutput 模板当前是否处于安全输出模式
    • 其他属性建议不熟悉的开发人员不要乱动

    使用普通的java类

    尽管实现Function对于模板引擎来说,是效率最高的方式,但考虑到很多系统只有util类,这些类里的方法仍然可以注册为模板函数。其规则很简单,就是该类的所有public方法。如果还需要Context 变量,则需要在方法最后一个参数加上Context即可,如

    1. public String print(Object a, Context ctx){
    2. }

    注意

    1. 从beetl效率角度来讲,采用普通类效率不如实现Function调用
    2. 采用的普通java类尽量少同名方法。这样效率更低。beetl调用到第一个适合的同名方法。而不像java那样找到最匹配的
    3. 方法名支持可变数组作为参数
    4. 方法名最后一个参数如果是Context,则beetl会传入这个参数。

    使用模板文件作为方法

    如下root/functions/page.fn

    则在模板中

    1. <%
    2. %>

    在任何模板里都可以调用:

    hello time is ${now(),'yyyy-MM-dd'}

    也可以在functions建立子目录,这样function则具有namespace,其值就是文件夹名