现在开发都是前后端分离,上次用模板引擎应该是用Golang自带的 template/html这个库,thymeleaf是Java中第一梯队的模板引擎,不过现在我用来做发送邮件的模板渲染引擎。

要使用thymeleaf需要配置ITemplateResolverClassLoaderTemplateResolver是常用的实现,表示在程序的资源目录里面查找。

final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setResolvablePatterns(Collections.singleton("email/*"));
templateResolver.setPrefix("/template/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(false);

参数都比较好理解,setTemplateMode 告诉模板引擎使用HTML语法,设置编码为UTF-8,并且不缓存内容。前面三个参数用来告诉模板引擎如何匹配和查找资源,先匹配路径,路径符合了再查找资源。调用的代码:

Context ctx = new Context(); 
String content = templateEngine.process("email/test.html", ctx);

模板引擎先拿字符串 email/test.htmlemail/*比较符合要求,并且文件名是.html,最后拼接上前缀/template/得到完整的路径/template/email/test.html,在项目里面对应的文件则为:

src/main/resources/template/email/test.html