jetbrick-template-2.x 已经发布,新版文档请看这里:http://subchen.github.io/jetbrick-template/2x/

§如何自定义 Tag

jetbrick-template 支持自定义 Tag,类似于 JSP Taglib,但是要比 JSP Taglib 更简单更好用。

这里以建立一个支持 Cache 的 Tag 为例。

§1. Cache Tag 代码范例:

§1.1 首先定义一个 Tag 实现方法

每一个自定义的 Tag 对应一个 Java 的 public static 的方法。比如我们这里定义的 cache tag,如下:

Tag 方法定义:

public class MyTags {
    public static void cache(JetTagContext ctx, String name, int timeout) throws IOException {
        Cache cache = CacheManager.getCache(); // 请用自己的 Cache 代替
        Object value = cache.get(name);
        if (value == null) {
            value = ctx.getBodyContext();
            cache.put(name, value, timeout);
        }
        ctx.getWriter().print(value);
    }
}

§1.2 必须要注册到全局的 JetEngine 中,我们使用如下的配置:

import.tags = MyTags, ...

§1.3 然后写对应的例子模板:

#tag cache("sum", 10)
    计算结果将被缓存10秒: ${1+2+3+4+5+6+7+8+9}
#end

§2. Cache Tag 代码说明

对于每一个 Tag 的方法声明,有如下要求:

在 Tag 方法中,我们可以通过 JetTagContext 来获取相关内容。主要 API 如下:

详细了解 JetTagContext 具体 API,请看 apidocs。

关于模板的使用: