欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Springboot整合FreeMarker

程序员文章站 2022-06-21 10:58:05
Springboot整合FreeMarker 遇到的问题:我现在要将内容以表格的形式以String类型放在邮件中发送出去。 我刚开始的时候,表格这部分前端代表写死在Manager层,这样后期如果邮件样式变动的话,需要大改,会比较麻烦。 所以,我现在就需要在工程中整合FreeMarker,生成HTML ......

Springboot整合FreeMarker

遇到的问题:我现在要将内容以表格的形式以String类型放在邮件中发送出去。

我刚开始的时候,表格这部分前端代表写死在Manager层,这样后期如果邮件样式变动的话,需要大改,会比较麻烦。

所以,我现在就需要在工程中整合FreeMarker,生成HTML页面并且以String的形式返回。

首先在pom加入maven依赖

    <!-- freeMarker -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency> 

然后,HTML的模板:

    <table border="2px" align="center" bordercolor="blue">
        <tr>
            <th>originId</th>
            <th>gmtCreated</th>
            <th>outOrderNo</th>
        </tr>
        <#list Orderlist as order>
        <tr>
            <td>${order.originId}</td>
            <td>${order.gmtCreated}</td>
            <td>${order.outOrderNo}</td>
        </tr>
        </#list>
    </table>

整合的代码:

public class Freemarker {
    public static void main(String[] args) {
        List<mailDo> list =new ArrayList<>();
        
        mailDo order =new mailDo();
        order.setGmtCreated("2018-05-03 10:00:00");
        order.setOriginId("001");
        order.setOutOrderNo("123451");
        
        mailDo order1 =new mailDo();
        order1.setGmtCreated("2018-05-02 10:20:30");
        order1.setOriginId("002");
        order1.setOutOrderNo("123452");
        
        list.add(order);
        list.add(order1);
        HashMap root =new HashMap();
        root.put("Orderlist", list);
        Configuration config = new Configuration();
        config.setDefaultEncoding("UTF-8");
        try {
            config.setDirectoryForTemplateLoading(new File("./src/main/resources/templates"));
            Template temp =config.getTemplate("mail.html");
            StringWriter swriter = new StringWriter();
            temp.process(root, swriter);
            System.out.println(swriter.toString());
        } catch (IOException | TemplateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }   
}

结果如下:

Springboot整合FreeMarker