SpringBoot整合freemarker中自定义标签获取字典表的数据

Posted 一个写烂代码的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot整合freemarker中自定义标签获取字典表的数据相关的知识,希望对你有一定的参考价值。

因为在前端要根据字典表中的数据去将1、2这些值转换成对应的文字解释
1.首先要创建一个类去实现 TemplateDirectiveModel 类
@Component
public class DictDirective implements TemplateDirectiveModel {

    @Override
    public void execute(Environment environment, Map map, TemplateModel[] templateModels, TemplateDirectiveBody templateDirectiveBody) throws TemplateException, IOException {
        DefaultObjectWrapperBuilder builder = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_25);
        if(map.containsKey("type") && map.get("type") != null){
            String type = map.get("type").toString();
            List<Dict> dictList = DictUtils.getDictList(type);
            if(map.containsKey("value") && map.get("value") != null){
                String value = map.get("value").toString();
                Dict dict = null;
                for (Dict dict1 : dictList) {
                    if(value.equals(dict1.getValue().toString())){
                        dict = dict1;
                    }
                }
                environment.setVariable("dict", builder.build().wrap(dict));
            }else{
                environment.setVariable("dictList", builder.build().wrap(dictList));
            }
        }
        if(templateDirectiveBody!=null){
            templateDirectiveBody.render(environment.getOut());
        }
    }
} 

 

2.创建一个配置类
@Component
public class FreemarkerConfig {
    @Autowired
    private Configuration configuration;
    @Autowired
    private DictDirective dictDirective;

    @PostConstruct
    public void setSharedVariable() throws TemplateModelException {
        configuration.setSharedVariable("dict_tag", dictDirective);
    }
}
然后就可以在页面上去调用了
<@dict_tag type="news_source" value="${news.source}">
                        ${dict.label}
                    </@dict_tag>

技术分享图片

前端可以任意传递参数,像type、value这样的,所有传递的参数都会被存到map里面,后台直接去取就可以了

以上是关于SpringBoot整合freemarker中自定义标签获取字典表的数据的主要内容,如果未能解决你的问题,请参考以下文章

「快学springboot」SpringBoot整合freeMark模板引擎

springboot整合freemarker自动加载宏

springboot整合freemarker

springboot整合freemarker

springboot整合freemarker

《SpringBoot篇》24.SpringBoot整合Freemarker超详细教程