您的位置:首页 > 编程语言 > Java开发

SpringBoot 实现Freemarker自定义标签

2017-10-12 10:16 471 查看

SpringBoot 实现Freemarker自定义标签

1.创建GlobalTag类实现TemplateDirectiveModel接口,重写里面的execute方法

@Component
public class GlobalTag implements TemplateDirectiveModel{
@Autowired
private GuavaDataCache guavaDataCache;
@Override
public void execute(Environment environment, Map map, TemplateModel[] templateModels, TemplateDirectiveBody templateDirectiveBody) throws TemplateException, IOException {
if(map.containsKey("key")&&map.get("key")!=null){//判断是否含有此变量
String key= map.get("key").toString();//获取变量值
String value= (String) guavaDataCache.query(key);//根据key获取缓存中的数据
DefaultObjectWrapperBuilder builder=new DefaultObjectWrapperBuilder//获取编译器(Configuration.VERSION_2_3_25);
environment.setVariable(key,builder.build().wrap(value));//在环境中设置变量
//templateDirectiveBody.render(environment.getOut());//当含有标签体式才需要
}
}
}


2.配置标签与自定义的标签类进行关联

@Component
public class FreemarkerConfig {
@Autowired
private Configuration configuration;
@Autowired
private GlobalTag globalTag;
@PostConstruct
public void setSharedVariable(){
configuration.setSharedVariable("global",globalTag);//标签名与标签类
}
}


3.页面使用

<@global key=”a”>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  freemarker SpringBoot