在java中freemarker 模板来定义字符串模板-亚博电竞手机版

目录

  • 问题描述
  • 代码实现
  • 问题总结

问题描述

  • 一个业务需求,需要在后端通过代码渲染一个,列表如下图所示(下图只是一个示意):

这个表格的特点就是数据重复比较多,结构简单,我们可以通过 java 代码直接拼字符串。但是这样的问题就会导致,代码非常的难看。在 java 代码中混杂着很多样式代码,可读性和可维护性比较差。所以我就pass着这个方案。

于是我就想到,通过模板 参数的方式来实现,这样可以做到结构和参数的分离,经过比较我选择了通过freemarker模板来定义结构,最终完成字符串模板的定义。

代码实现

  • 导入依赖,这里我是基于spring-boot为基础的。

implementation 'org.springframework.boot:spring-boot-starter-freemarker'

  • freemarker 工具方法,主要是实现模板文件的读取和渲染。

@slf4j public class freemarkerutils { static configuration cfg = new configuration(configuration.default_incompatible_improvements); static {恰卡编程网 cfg.setencoding(locale.english, "utf-8"); cfg.settemplateloader(new springtemplateloader(new defaultresourceloader(),"templates/")); } /** * 获取模板 * * @param templatename * @return */ public static template gettpl(string templatename){ try { template template = cfg.gettemplate(templatename); return template; } catch (exception e) { log.error("获取模板失败 {}"恰卡编程网,templatename,e); return null; } } /** * 获取模板写入后的内容 * * @param templatename * @param moaqlcmwrpidel * @return */ public static optional gettpltext(string templatename, map model){ try { template template = cfg.gettemplate(templatename); string text = freemarkertemplateutils.processtemplateintostring(template, model); return optional.ofnullable(text); } catch (exception e) { log.error("获取模板内容失败 {}",templatename,e); return optional.empty(); } } }

  • 定义模板,如下所示(下面知识一个示意):

<#list list as item> ${item.url} | ${item.name} | ${item.age}

  • 使用模板并且返回渲染后的字符串,最终返回字符串。

map model = new hashmap<>(); model.put("list", new arraylist()) freemarkerutils.gettpltext("a.html", model);

问题总结

  • 我们使用模板的方式可以减少字符串的拼接,提高代码的可维护性。
  • 如果我们系统中代码风格比较统一,我们可以通过这种方式来生成代码(只需要对数据库的 table meta 进行读取,然后再定义 java 代码模板即可)。

到此这篇关于在java中freemarker 模板来定义字符串模板的文章就介绍到这了,更多相关freemarker 定义字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图