Spring Boot Thymeleaf: невозможно выбрать шаблоны из подпапок в ресурсах / шаблонах - PullRequest
0 голосов
/ 10 июля 2019

Я использую Thymeleaf v3.0.11.RELEASE Spring Boot v2.1.3.RELEASE, и у меня возникают проблемы с моими шаблонами, размещенными в classpath: templates / folder1 / folder2 /.

Я попробовал следующие подходы

  • Установка свойства spring.thymeleaf.prefix в classpath:/templates/**/, classpath:/templates/* и других подобных шаблонов
  • Попытка добавления распознавателя шаблонов в классе запуска приложения.

    @Bean
    public TemplateEngine emailTemplateEngine() {
        final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(htmlTemplateResolver());
        return templateEngine;
    }
    
    private ITemplateResolver htmlTemplateResolver() {
        final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setResolvablePatterns(Collections.singleton("/*"));
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setCacheable(false);
        return templateResolver;
    

    }

Эти подходы не работают, и я все еще получаю сообщение об ошибке:

"Error resolving template [template_name], template might not exist or might not be accessible by any of the configured Template Resolvers"

Я что-то упустил?Мне просто нужно знать, как включить подстановочные знаки для суффикса.

Примечание: это работает, если я жестко кодирую classpath:templates/folder1/folder2, но я не могу, так как будет несколько папок, и я не будухочу исправить все имена папок.

1 Ответ

0 голосов
/ 10 июля 2019

добавьте следующий класс конфигурации в ваше приложение

@Configuration
public class ThymeleafConfig {

  @Bean
  public SpringTemplateEngine springTemplateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.addTemplateResolver(htmlTemplateResolver());
    return templateEngine;
  }

  @Bean
  public SpringResourceTemplateResolver htmlTemplateResolver() {
    SpringResourceTemplateResolver templateResolver =
        new SpringResourceTemplateResolver();
    templateResolver.setPrefix("classpath:/templates/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(
        StandardTemplateModeHandlers.HTML5.getTemplateModeName());
    templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
    return templateResolver;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...