【发布时间】:2018-10-12 18:12:43
【问题描述】:
我正在尝试输出已被百里香叶处理过的 html,因此将填写诸如 ${name}、${address} 之类的值。
但实际发生的情况是,templateEngine 正在拆分出看起来与进入时实际上相同的 html。
主要关注来自memorynotfound.com的tutorial
这是我的 ThymeleafConfig
@Configuration
public class ThymeleafConfig {
@Bean
public SpringTemplateEngine springTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(htmlTemplateResolver());
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver htmlTemplateResolver(){
SpringResourceTemplateResolver emailTemplateResolver = new SpringResourceTemplateResolver();
emailTemplateResolver.setPrefix("classpath:/templates/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode(StandardTemplateModeHandlers.HTML5.getTemplateModeName());
emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
emailTemplateResolver.setCacheable(false);
return emailTemplateResolver;
}
}
我的方法我在哪里调用 templateEngine
@Component
public class ThymeleafEngine {
@Autowired
private SpringTemplateEngine templateEngine;
Email email = new Email();
public String process () {
Map model = new HashMap();
model.put("name", "Bob");
email.setMap(model);
Context context = new Context();
context.setVariables(email.getMap());
templateEngine.initialize();
String html = templateEngine.process("email_template", context);
return html;
}
}
电子邮件对象
public class Email {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Map map;
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
}
我无法在这篇文章中添加更多代码,但 html 非常基本,唯一的区别是 <p> 标记内的 ${name}。
【问题讨论】:
-
templates文件夹中有您的 HTML 文件吗?这是 Thymeleaf 模板的默认位置。 -
是的,它在模板文件夹中
标签: spring-boot thymeleaf