SpringBoot 实现Freemarker自定义标签

来源:互联网 发布:mac os x lion 10.8 编辑:程序博客网 时间:2024/05/20 05:23

SpringBoot 实现Freemarker自定义标签

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

@Componentpublic class GlobalTag implements TemplateDirectiveModel{@Autowiredprivate GuavaDataCache guavaDataCache;@Overridepublic 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.配置标签与自定义的标签类进行关联

@Componentpublic class FreemarkerConfig {@Autowiredprivate Configuration configuration;@Autowiredprivate GlobalTag globalTag;@PostConstructpublic void setSharedVariable(){configuration.setSharedVariable("global",globalTag);//标签名与标签类}}

3.页面使用

<@global key=”a”>