FreeMarker自定义标签

freemarker 自定义标签

有两种方法,一种是Spring注解添加自定义标签 一种的编码添加自定义标签

第一种:编码添加自定义标签
步骤一:添加自定义解析器
创建一个类继承 FreeMarkerConfigurer 类.重写afterPropertiesSet方法

示例:

@Override
public void afterPropertiesSet() throws IOException, TemplateException {
    super.afterPropertiesSet();
    this.getConfiguration().setSharedVariable("boolean",
            new BooleanDirective());
}

setSharedVariable() 第一个是你freemaker要使用的标签名称 ,可以自定义 ,第二个是你实现的自定义标签

配置解析器


    

详细讲解下BooleanDirective 实现
创建 BooleanDirective 类 可以自定义名称 实现TemplateDirectiveModel接口
重写 execute 方法
Environment 获取输出流。Map 自定义标签传过来的 ,TemplateModel[]这个我也不是很清楚,很少用,可以自己去查资料
TemplateDirectiveBody 用来输出.

Writer out = env.getOut();
TemplateScalarModel scalarModel = (TemplateScalarModel) params.get("flag");
boolean flag = scalarModel.getAsString().equals("123");
if (flag) {
    body.render(out);
}else {
    
}

params.get() 返回有3中数据类型:
TemplateNumberModel 数字类型, TemplateScalarModel 字符串类型,TemplateBooleanModel boolean类型

根据你实际的需求走,我这里接收的是TemplateScalarModel类型的
我得到一个值 然后判断是不是123 如果是的话,进行 标签的内容 输出 ,不是的话 标签的内容就不进行输出
模版调用:

[@boolean flag="123"]测试boolean[/@boolean]

这个flag是你那里map得到的key
到这里结束了,可以自己去试试.
还有一个简化添加自定义标签
Spring注解添加自定义标签






    
    
        
            
        
    

就可以了.2种方法随你想用哪一个

你可能感兴趣的:(FreeMarker自定义标签)