当前位置: 首页 > 知识库问答 >
问题:

Spring Boot 2胸腺叶配置忽略模板

孟福
2023-03-14

我正在迁移现有的应用程序到Spring 5.0.0。M3

该应用程序有两个模板文件夹邮件模板。如果我为电子邮件模板指定以下配置,templates文件夹将被忽略;e、 g.我正在获取此文件夹中模板的FileNotFoundException

@Configuration
public class ThymeleafConfiguration {

    @SuppressWarnings("unused")
    private final Logger log = LoggerFactory.getLogger(ThymeleafConfiguration.class);

    @Bean
    @Description("Thymeleaf template resolver serving HTML 5 emails")
    public ClassLoaderTemplateResolver emailTemplateResolver() {
        ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
        emailTemplateResolver.setPrefix("mails/");
        emailTemplateResolver.setSuffix(".html");
        emailTemplateResolver.setTemplateMode("HTML5");
        emailTemplateResolver.setCharacterEncoding(CharEncoding.UTF_8);
        emailTemplateResolver.setOrder(1);
        return emailTemplateResolver;
    }
}

我尝试过将setOrder参数设置为2,10等,这没有什么区别。如果我删除了解析器方法,则可以识别模板文件夹,但不能识别mails文件夹。

你知道会发生什么吗?

共有1个答案

颛孙子民
2023-03-14

据我所知,您在resources文件夹下有邮件和模板子文件夹。

您可以在ClassLoaderTemplateResolver中添加资源文件夹作为前缀。然后为邮件和模板子文件夹添加ResourceHandler。

ClassLoaderTemplateResolver

 @Bean
 @Description("Thymeleaf template resolver serving HTML 5 emails")
 public ClassLoaderTemplateResolver emailTemplateResolver() {
     ClassLoaderTemplateResolver emailTemplateResolver = new 
     ClassLoaderTemplateResolver();
     emailTemplateResolver.setPrefix("resources/");
     emailTemplateResolver.setSuffix(".html");
     emailTemplateResolver.setTemplateMode("HTML5");
     emailTemplateResolver.setCharacterEncoding(CharEncoding.UTF_8);
     emailTemplateResolver.setOrder(1);
     return emailTemplateResolver;
}

将ResourceHandler方法放在应用程序类中,并用@SpringBootApplication注释该类。

资源处理程序

public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!registry.hasMappingForPattern("/mails/**")) {
        registry.addResourceHandler("/mails/**").addResourceLocations("classpath:/resources/mails/");
    }
    if (!registry.hasMappingForPattern("/templates/**")) {
        registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/resources/templates/");
    }
}

当您从任何方法返回视图名称时,它可能类似于:

return "mails/page1"; 

return "templates/page2";
 类似资料:
  • 我想做一些像 在百里香叶中。我知道有一个价值观,我要做的就是 如何在Thyemleaf的select选项中传递两个值。

  • 我试图在thymleaf中迭代函数列表。这就是我所做的。 控制器: 并在html中: 我是新来的。我做错了什么?或者我应该使用?

  • 我想把JavaScript onClick属性使用Thym立叶。 我这样写代码 此代码正在运行。当productName包含这样的特殊字符时,我会遇到问题 然后JavaScript函数看起来像这样 我需要从产品名称中转义双引号和单引号字符。我该怎么做?

  • 当图像存在时,我想在thymleaf中显示背景图像,但如果不存在,我想在那里显示默认图像。我试过的如下 在最后一个空引用中,我想放一个这样的默认图像 但它显示出错误。正确的语法是什么?

  • 我正在使用Spring Boot 1.2.7和Thymeleaf。 所有html页面都在文件夹中,当我说

  • 我试图从这个胸腺页发送一个参数 然后我尝试使用此代码接收参数() 问题是当的值类似于我在方法中收到的makeAndSendInVoice只是 它不会向我发送部分 我该怎么修?