🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 2.4 自定义标签 标签有两种形式,一种是标签函数,第二种是html tag。 [TOC] ### 2.4.1 标签函数 标签函数类似jsp2.0的实现方式,需要实现Tag类的render方法即可 ```java public class DeleteTag extends Tag{ @Override public void render(){ // do nothing,just ignore body ctx.byteWriter.write("被删除了,付费可以看") } } ``` 如上一个最简单的Tag,将忽略tag体,并输出内容 ```java public class XianDeDantengTag extends Tag{ @Override public void render(){ doBodyRender(); } } ``` 此类将调用父类方法doBodyRender,渲染tag body体 ```java 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 标签体对应的语法树,不熟悉勿动 ### 2.4.2 html tag 第二种实际上在语法解析的时候会转化成第一种,其实现是HTMLTagSupportWrapper,此类将会寻找root/htmltag目录下同名的标签文件作为模板来执行。类似普通模板一样,在此就不详细说了