通过java渲染FreeMarker模板

  • 场景
    • 添加POM依赖
    • 添加模板
    • 添加工具类
    • 编写测试方法
    • 输出结果
    • 最后看下整体项目结构

场景

由于业务中台的邮件模板无法支持FreeMarker语法,故需自己编写html代码当做变量参数传入邮件模板,所以最终选用了引入FreeMarker模板引擎实现。

添加POM依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId><version>2.4.5</version>
</dependency>

添加模板

<table style='width:100.0%;border:1.0px solid #e5e5e5;margin-bottom:15.0px;border-collapse:collapse;font-size:15px'><th style='width:40px;border:1.0px solid #e5e5e5;background-color:#f5f5f5;padding:5.0px;text-align:center;'>序号</th><th style='width:150px;border:1.0px solid #e5e5e5;background-color:#f5f5f5;padding:5.0px;text-align:center;'>姓名</th><#list dataList as item><tr><td style='padding:5.0px;text-align:center;border:1.0px solid #e5e5e5;'>${item.number}</td><td style='padding:5.0px;text-align:center;border:1.0px solid #e5e5e5;'>${item.name}</td></tr></#list>
</table>

添加工具类

package com.example.cabin;import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;import java.io.IOException;
import java.io.StringWriter;public class FreeMarkerUtil {private FreeMarkerUtil() {}public static String parseTemplate(String path, String filename, Object data) throws IOException {Configuration configuration = new Configuration(Configuration.getVersion());configuration.setDefaultEncoding("UTF-8");configuration.setClassForTemplateLoading(FreeMarkerUtil.class, path);configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);configuration.setWhitespaceStripping(true);Template template = configuration.getTemplate(filename);// 接收处理后的模版内容StringWriter stringWriter = new StringWriter();try {template.process(data, stringWriter);return stringWriter.toString();} catch (TemplateException e) {e.printStackTrace();} finally {stringWriter.close();}return "";}
}

编写测试方法

package com.example.cabin;import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test {private static final String path = "/";private static final String filename = "demo.ftl";public static void main(String[] args) throws IOException {//模拟对象Map<String, String> object = new HashMap<>(2);object.put("number", "1");object.put("name", "xxx");//数据列表List<Map<String, String>> dataList = new ArrayList<>();dataList.add(object);//模板变量Map<String, List<Map<String, String>>> templateMap = new HashMap<>(1);templateMap.put("dataList", dataList);//调用工具类抓取html代码String template = FreeMarkerUtil.parseTemplate(path, filename, templateMap);System.out.println(template);}
}

输出结果

<table style='width:100.0%;border:1.0px solid #e5e5e5;margin-bottom:15.0px;border-collapse:collapse;font-size:15px'><th style='width:40px;border:1.0px solid #e5e5e5;background-color:#f5f5f5;padding:5.0px;text-align:center;'>序号</th><th style='width:150px;border:1.0px solid #e5e5e5;background-color:#f5f5f5;padding:5.0px;text-align:center;'>姓名</th><tr><td style='padding:5.0px;text-align:center;border:1.0px solid #e5e5e5;'>1</td><td style='padding:5.0px;text-align:center;border:1.0px solid #e5e5e5;'>xxx</td></tr>
</table>

对应效果:

序号 姓名
1 xxx

最后看下整体项目结构

无需配置application.yml


声明:
如涉及侵权请联系作者及时删除

java通过模板生成html代码相关推荐

  1. JAVA 根据模板生成doc文件

    JAVA 根据模板生成doc文件 需求 根据模板生成对应的doc文档,文档内容动态填充. 实现 1.将doc模板转换为ftl文件,放入项目中 1.1 首先将模板另存为xml文件 1.2 更改xml文件 ...

  2. java根据模板生成pdf文件并导出(iText)

    java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...

  3. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...

  4. python按模板生成html_python 利用jinja2模板生成html代码实例

    这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from jinja2 imp ...

  5. NetTier模板生成的代码框架用法 (转)

    1.1. 概述: 使用NetTier模板生成的.net代码,包括完整的数据层,使用的技术是微软的 EnterpriseLibrary1.1版本,对应每张表都生成相对应的增删改查函数和存储过程,在查询中 ...

  6. CodeSmith NetTier模板生成的代码框架用法 (转)

    1.1. 概述: 使用NetTier模板生成的.net代码,包括完整的数据层,使用的技术是微软的 EnterpriseLibrary1.1版本,对应每张表都生成相对应的增删改查函数和存储过程,在查询中 ...

  7. java用模板生成word(docx)文档(含动态表格)

    生成word思路 用WPS或者office编辑好word的样式,然后另存为word xml文档,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Docx. 编 ...

  8. Java根据模板生成pdf文件并导出

    原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...

  9. Java根据模板生成excel文件【Java】【EasyExcel】【xls】

    Background 前两天客户反应对数据导出的文件格式不太满意,然后给了我们模板,让我们按照模板导出数据.于是一通修改(excel数据量有限制他们也不管,之前我们给的csv格式). Java操作ex ...

最新文章

  1. angular元素属性绑定_AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用...
  2. 数据可视化echarts学习笔记
  3. web 小程序 ch3 小程序框架
  4. c# 从一个大图里截取图形
  5. 嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务
  6. css3 固定,CSS3 calc()不适用于固定位置/绝对位置
  7. png文件合并_png格式图片和jpg格式图片有什么区别?
  8. (50)Verilog HDL SPI发送设计
  9. mysql存储登录密码_用户身份验证:存储用户ID和密码在一个MySQL数据库
  10. HDU 1260: Tickets
  11. arm-linux-gcc stdio.h,arm-linux-gcc stdio.h no such file or directory错误
  12. 条件运算符 c语言,C语言 —— 条件运算符
  13. 【qq机器人】机器人发美女图片
  14. 如何在win10中迅速打开命令提示符
  15. 计算机专业老师教案,技能大赛-2015年全国中等职业学校计算机应用基础及计算机类专业课程“创新杯”教师信息化教学设计和说课比赛总结...
  16. ubuntu 更换系统源和pip源
  17. 8.16 Redis的新数据结构、配置文件及使用
  18. linux svn 忽略指定文件
  19. H5企业微信如何返回到菜单页?
  20. 梯度值与参数更新optimizer.zero_grad(),loss.backward、和optimizer.step()、lr_scheduler.step原理解析

热门文章

  1. 修改oracle的连接时间,如何显式修改数据库连接超时时间
  2. MemcachedRedis构建缓存服务器
  3. 十天冲刺开发第九天个人工作总结
  4. Fedora18 安装后风扇不停的转
  5. vue获取dom元素与修改样式详解
  6. 研华微型计算机biso,研华工控机BIOS设置通电自启动方法技巧
  7. 【转】WIN32编程中的HRESULT类型和LRESULT类型的区别
  8. matlab三维凸包,计算凸包 - MATLAB Simulink - MathWorks 中国
  9. EWMA控制图的设计理论与方法
  10. GIS(六)——实现js版搜狗地图周边搜索功能