Наследование шаблона Pebble происходит без ошибок - PullRequest
0 голосов
/ 02 июля 2018

Я использую шаблонизатор Pebble с Spring Boot 2, и все работает нормально, пока я не начну использовать наследование. Браузер показывает пустую страницу, контент вообще не возвращается. И, к сожалению, в журналах сервера и Catalina (я использую Tomcat 8.5) ошибок нет.

В моем pom у меня есть следующие зависимости:

  • Spring Boot 2.0.3 (как родитель)
  • pebble-spring-boot-2-starter (пробовал 2.6.2 и 3.0.0.BETA01)
  • весна-загрузка-стартер-данные JPA
  • весна-загрузка-стартер-веб
  • весна-загрузка-стартер-безопасность

У меня есть следующее application.properties

  • pebble.suffix = .html.peb
  • pebble.cache = false (также пробовал true)

Мой родительский шаблон (resources / templates / base.html.peb)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head></head>
<body>Template test</body>
</html>

Мой дочерний шаблон (resources / templates / child.html.peb)

{% extends "base.html.peb" %}

Когда я удаляю наследство, Pebble работает нормально, включает и показывает модель, поэтому Pebble работает.

1 Ответ

0 голосов
/ 03 июля 2018

Pebble Spring Boot Starter разрешает путь к шаблону путем объединения префикса, имени шаблона и суффикса:

открытый класс PebbleTemplateAvailabilityProvider реализует TemplateAvailabilityProvider {

@Override
public boolean isTemplateAvailable(String view, Environment environment, ClassLoader classLoader,
        ResourceLoader resourceLoader) {
    if (ClassUtils.isPresent("com.mitchellbosecke.pebble.PebbleEngine", classLoader)) {
        String prefix = environment.getProperty("pebble.prefix", PebbleProperties.DEFAULT_PREFIX);
        String suffix = environment.getProperty("pebble.suffix", PebbleProperties.DEFAULT_SUFFIX);
        return resourceLoader.getResource(ResourceLoader.CLASSPATH_URL_PREFIX + prefix + view + suffix).exists();
    } else {
        return false;
    }
}

}

Если шаблон указан с суффиксом в директиве extends, суффикс будет добавлен еще раз, а шаблон не будет найден, что-то вроде:

ресурсы / шаблоны / base.html.peb.html.peb

Чтобы решить эту проблему, имя шаблона гальки должно быть указано без префикса в директиве extends:

{% extends "base" %}

Для меня это ошибка. Pebble Spring Boot Starter должен быть в состоянии обнаружить, что базовый шаблон указан с суффиксом или без него.

...