自定义标签
标签形式有俩种,一种是标签函数,第二种是html tag。第二种实际上在语法解析的时候会转化成第一种,其实现是HTMLTagSupportWrapper,此类将会寻找root/htmltag目录下同名的标签文件作为模板来执行。类似普通模板一样,在此就不详细说了
标签函数
标签函数类似jsp2.0的实现方式,需要实现Tag类的render方法即可
public class DeleteTag extends Tag{
@Override
public void render(){
// do nothing,just ignore body
ctx.byteWriter.write("被删除了,付费可以看")
}
}
如上一个最简单的Tag,将忽略tag体,并输出内容
public class XianDeDantengTag extends Tag{
@Override
public void render(){
doBodyRender();
}
}
此类将调用父类方法doBodyRender,渲染tag body体
public class CompressTag extends Tag{
@Override
public void render(){
BodyContent content = getBodyContent();
String content = content.getBody();
String zip = compress(cotnent);
ctx.byteWriter.write(zip);
}
}
此类将调用父类方法getBodyContent ,获得tag body后压缩输出
tag类提供了如下属性和方法供使用
- args 传入标签的参数
- gt GroupTemplate
- ctx Context
- bw 当前的输出流
- bs 标签体对应的语法树,不熟悉勿动