Java 弹簧靴&x2B;ThymileAF-多模板解析程序,可回退到默认值
我正在尝试在我的Spring Boot应用程序中添加对带有Thymeleaf模板的电子邮件的支持。只要我只使用存储为Java 弹簧靴&x2B;ThymileAF-多模板解析程序,可回退到默认值,java,spring-boot,thymeleaf,Java,Spring Boot,Thymeleaf,我正在尝试在我的Spring Boot应用程序中添加对带有Thymeleaf模板的电子邮件的支持。只要我只使用存储为.html文件的模板,它就可以正常工作。我想做的是添加对使用用户配置的模板“覆盖”这些文件的支持。所以,若数据库中存在模板,就使用它。否则,请尝试使用文件中的一个 我的配置如下所示: @Configuration public class ThymeleafConfig { @Bean public SpringTemplateEngine springTempl
.html
文件的模板,它就可以正常工作。我想做的是添加对使用用户配置的模板“覆盖”这些文件的支持。所以,若数据库中存在模板,就使用它。否则,请尝试使用文件中的一个
我的配置如下所示:
@Configuration
public class ThymeleafConfig {
@Bean
public SpringTemplateEngine springTemplateEngine(DatabaseTemplateResolver databaseTemplateResolver) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
databaseTemplateResolver.setTemplateMode(TemplateMode.HTML);
templateEngine.addTemplateResolver(databaseTemplateResolver);
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver htmlTemplateResolver() {
SpringResourceTemplateResolver emailTemplateResolver = new SpringResourceTemplateResolver();
emailTemplateResolver.setPrefix("/templates/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode(TemplateMode.HTML);
emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
return emailTemplateResolver;
}
}
和数据库解析器:
@RequiredArgsConstructor
@Component
public class DatabaseTemplateResolver extends StringTemplateResolver {
@Qualifier("htmlTemplateResolver")
private final SpringResourceTemplateResolver htmlTemplateResolver;
@Override
public ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String templateName, Map<String, Object> templateResolutionAttributes) {
model.runInTransaction(tx -> {
Optional<Template> template = // load template from DB;
if (template.isPresent()) {
return super.computeTemplateResource(configuration, ownerTemplate, template.get().getContent(), templateResolutionAttributes);
} else {
return htmlTemplateResolver.resolveTemplate(configuration, ownerTemplate, templateName, templateResolutionAttributes);
}
}, TransactionDescriptor.asSystemUser());
return null;
}
}
有人知道我做错了什么吗?我希望你没事,你看到这个答案了吗
我想这是因为您设置了前缀或后缀。您好,谢谢。。。这是对前缀的错误配置。多么愚蠢的错误。。。花了很多时间调试这个。
[THYMELEAF][task-2] Exception processing template "email-notification": Error resolving template [email-notification], template might not exist or might not be accessible by any of the configured Template Resolvers
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [email-notification], template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869)
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1059)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1048)