Thymeleaf + SpringBoot с FileTemplateResolver - PullRequest
       12

Thymeleaf + SpringBoot с FileTemplateResolver

0 голосов
/ 06 сентября 2018

мы не хотим, чтобы Thymeleaf загружал HTML-шаблоны, используя ClassPathLoader или аналогичные, но FileTemplateResolver вместо

у нас есть префикс, установленный в app.properties

spring.thymeleaf.prefix=file:///tmp/templates/

, которые мы подаем на TemplateResolver и TemplateEngine

@Configuration
public class ThymeleafConfiguration {

    @Value("${spring.thymeleaf.prefix}")
    private String prefix;

    private static final Logger LOG = LoggerFactory.getLogger(ThymeleafConfiguration.class);

    @Bean
    public FileTemplateResolver fileTemplateResolver() throws FileNotFoundException {
        FileTemplateResolver fileTemplateResolver = new FileTemplateResolver();
        fileTemplateResolver.setPrefix(getPath());
        fileTemplateResolver.setTemplateMode("LEGACYHTML5");
        fileTemplateResolver.setSuffix(".html");
        fileTemplateResolver.setCharacterEncoding("UTF-8");
        fileTemplateResolver.setOrder(1);
        return fileTemplateResolver;
    }

    public String getPath() throws FileNotFoundException {
        LOG.info("getPath, prefix set to : {}", prefix);
        File templatesFolder = new File(prefix);
        if (!templatesFolder.isDirectory() || templatesFolder.list() == null || templatesFolder.list().length == 0) {
            LOG.error("Templates cannot be found in path {}", prefix);
            LOG.error("templatesFolder {}", templatesFolder.toString());  // !!!! code falls here .
//            throw new FileNotFoundException("Templates cannot be found!");
        }
        return templatesFolder.getAbsolutePath() + File.separatorChar;
    }

    @Bean
    public TemplateEngine templateEngine() throws FileNotFoundException {
        TemplateEngine templateEngine = new TemplateEngine();
        templateEngine.getTemplateResolvers().clear();
        templateEngine.setTemplateResolver(fileTemplateResolver());
        return templateEngine;
    }
}

Кажется, это работает, странно ..

Но я в замешательстве, потому что при запуске приложения, создании компонента, код систематически падает в методе проверки в getPath.

это нормально?

Спасибо

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