我需要使用Thymeleaf模板为不同地区发送电子邮件。
我的HTML中有下一部分
<p th:text="#{TEST}"></p>
我有下一个密码
Context context = new Context();
context.setLocale(Locale.GERMAN);
String emailBody = templateEngine.process( "WELCOME", context);
我有下一个豆子
@Bean
public TemplateEngine mailTemplateEngine() {
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.addTemplateResolver(mailTemplateResolver());
templateEngine.addDialect(new LayoutDialect());
templateEngine.setMessageResolver(messageResolver());
return templateEngine;
}
@Bean
public ITemplateResolver mailTemplateResolver() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("/templates/email/common/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding(UTF_8.name());
templateResolver.setCheckExistence(true);
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
public IMessageResolver messageResolver() {
return new StandardMessageResolver();
}
我正在使用下一个依赖项
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
我在“资源”文件夹中有我需要的每种语言的资源包消息。如果你用ctrl左键从我的html中检查#{TEST},你可以看到它看到属性文件,所以IDEA可以解析它。
当我运行我的应用程序并尝试发送电子邮件时,我得到了下一个结果
??TEST_de??
对于其他语言,我得到了类似的结果。
如何解决这个问题?我需要TemplateEngine能够根据区域设置获得适当的属性值。
使用Spring和Thymeleaf时,您可能会更好地使用提供Spring集成的Thymeleaf类。像SpringTemplateEngine
,它将自动连接到SpringMessageSource
。
现在,在使用Spring时,您可能还需要使用SpringResourceTemplateResolver
。
java prettyprint-override">@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
source.setBasename("classpath:/messages");
return source;
}
@Bean
public SpringTemplateEngine mailTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(mailTemplateResolver());
templateEngine.addDialect(new LayoutDialect());
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver mailTemplateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:/templates/email/common/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding(UTF_8.name());
templateResolver.setCheckExistence(true);
templateResolver.setCacheable(false);
return templateResolver;
}
专业提示:当使用Java配置时,尽量在返回类型中具体化,这使Spring更容易确定回调,如ApplicationWare
,MessageSourceAware
等。
我遇到了一个问题,让我的spring boot应用程序加载我的简单网页。我已经复制了这里提供的示例,并在模板目录中实现了它们,我一直得到这个错误 TemplateInputException:解析模板[index]时出错,模板可能不存在,或者任何已配置的模板解析程序都无法访问模板 下面是文件目录 如有任何帮助,不胜感激,谢谢。
下面是index.html 它们在不同的文件夹中,但pathing应该工作,除非我只是错过了一些真正愚蠢的东西。
我的问题是我未能显示胸腺叶模板。我怀疑配置错误,但我似乎找不到它。提前感谢:) 波姆。xml: 模板在: Spring配置: 控制器: 我正在尝试访问:并获得404。 另一件事,有人能解释(或给文档一个链接)哪个servlet被用来“返回”模板html吗?是Spring调度员servlet吗? 好的,所以我忘记了,谢谢@Benjamin c.然而,添加它会产生:
我想在HTML中显示一个请求的对象,我得到了一个错误,我不知道是什么原因导致了我的错误。谷歌帮不上忙,现在我试着问你。我认为错误不是来自我的表,因为我把它注释掉了,错误仍然是Occour。该错误也不是来自“http://localhost:8081/simulation”,因为我使用有效值重新接收了一个有效的JSON。谢谢你的帮助:)。 下面是我的代码: 我通过调用“http://localhos
我不熟悉Spring5和SpringBoot。我试图用thymeleaf创建一个Spring5/spring启动应用程序。我想创建一个war,而不是使用带有spring boot的嵌入式Web服务器。 当我部署war时,我的应用程序启动,我可以访问src/main/resources/static/中的测试html页面,其中包含调用我的控制器的javascript。我可以在这些页面上执行到控制器和
所以,我看到在Stackoverflow中都能回答这个问题,但对我没有任何帮助。(SpringMVC+Thymeleaf,错误消息是:模板可能不存在,或者任何已配置的模板解析程序都无法访问