jetbrick-template-1.x 旧版文档请看这里:http://subchen.github.io/jetbrick-template/1x/

§标签 Tag

jetbrick-template 支持用户自定义模板标签 Tag,功能类似于 JSP Taglib,但是要比 JSP Taglib 更简单更好用。

比如下面的代码范例:

#tag cache("CACHE-ME-30-MIN", 30*60)
    今天天气: ${WeatherUtils::getAsHtml()}
#end

这个例子演示了一个自定义的 cache tag,允许将天气结果缓存上 30 分钟,而不是每次都重新获取天气信息。

§1. 定义标签 Tag

每一个 Tag 由 Java 中的一个静态方法实现。

语法:

public static void tag_name ( JetTagContext ctx, args ... )

示例:

package jetbrick.demo;

public class MyTags {
    private static final TimedSizeCache cache = new TimedSizeCache(128);

    public static void cache(JetTagContext ctx, String name, int timeout) throws IOException {
        Object value = cache.get(name);
        if (value == null) {
            value = ctx.getBodyContent();
            cache.put(name, value, timeout);
        }
        ctx.getWriter().print(value.toString());
    }
}

§2. 注册标签 Tag

用户自定义的 Tag 必须注册到 JetEngine 中才能使用。注册 Tag 有 3 种途径:

§3. JetTagContext 的使用

Tag 的实现第一个参数是 JetTagContext,它包含了 Tag 运行时的上下文。

主要 API:

§4. 模板已经内置的标签 Buildin Tags

所有 Tags 都定义在下面的 2 个 Class 中

§4.1 Layout 布局相关

§4.2 Web 缓存相关 (需要 jetbrick-template-web)