springboot集成freemarker将模板填充数据并转换成字符串

引入依赖

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

创建模板

由于springboot会自动加载templates下面的资源文件,因此模板文件可以放在templates下面:

 

模板内容:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>发送邮件</title>
    </head>
    <body>
        <#list users as user>
            <p>姓名:${user.userName}</p>
            <p>年龄:${user.userAge}</p>
        </#list>
    </body>
</html>

测试代码

单元测试:

@SpringBootTest
class TemplateEnginDemoApplicationTests {

    @Autowired
    private FreeMarkerConfigurer configurer;
    
    @Test
    public void testMail() throws IOException, TemplateException {
        List<User> users = new ArrayList<>();
        User user = new User();
        user.setUserName("张三");
        user.setUserAge(23);
        users.add(user);
        user = new User();
        user.setUserName("李四");
        user.setUserAge(30);
        users.add(user);
        Map<String,Object> map = new HashMap<>();
        map.put("users",users);
        Template template = configurer.getConfiguration().getTemplate("emailTemplate.html");
        String resStr = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        System.out.println(resStr);
    }
}

User.java

/**
 * @author lipeiguang
 * @description 用户
 * @date 2020/10/2 14:54
 **/
public class User {
    private String userName;
    private int userAge;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getUserAge() {
        return userAge;
    }

    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
}

 

posted @ 2020-10-02 15:07  菜鸟的菜_疯子  阅读(3598)  评论(0)    收藏  举报