我在Spring Boot 2中使用了Pebble模板引擎,在我开始使用继承之前,一切工作正常。浏览器显示一个空白页面,根本不返回任何内容。不幸的是,服务器和Catalina(我正在使用Tomcat 8.5)日志没有显示错误。
在pom中,我具有以下依赖性:
我有以下application.properties
我的父模板(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确实可以工作。
答案 0 :(得分:1)
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'指令中指定后缀,则后缀将被追加一次,而找不到模板,例如:
resources / templates / base.html.peb.html.peb
要解决此问题,必须在'extends'指令中指定卵石模板名称而不加前缀:
{% extends "base" %}
对我来说,这是一个错误。 Pebble Spring Boot Starter应该能够检测带有或不带有后缀的基本模板。