Java Pebble模板继承失败,没有错误
我在SpringBoot2中使用Pebble模板引擎,在我开始使用继承之前,一切正常。浏览器显示一个空页面,不返回任何内容。不幸的是,服务器和Catalina(我使用的是Tomcat8.5)日志没有显示错误 在我的pom中,我有以下依赖项:Java Pebble模板继承失败,没有错误,java,spring,spring-boot,pebble,Java,Spring,Spring Boot,Pebble,我在SpringBoot2中使用Pebble模板引擎,在我开始使用继承之前,一切正常。浏览器显示一个空页面,不返回任何内容。不幸的是,服务器和Catalina(我使用的是Tomcat8.5)日志没有显示错误 在我的pom中,我有以下依赖项: Spring Boot 2.0.3(作为父级) pebble-spring-boot-2-starter(试用2.6.2和3.0.0.BETA01) spring引导启动器数据jpa SpringBootStarterWeb 弹簧启动安全 我有以下app
- Spring Boot 2.0.3(作为父级)
- pebble-spring-boot-2-starter(试用2.6.2和3.0.0.BETA01)
- spring引导启动器数据jpa
- SpringBootStarterWeb
- 弹簧启动安全
- pebble.suffix=.html.peb
- pebble.cache=false(也尝试为true)
当我删除继承时,Pebble工作正常,包括并显示模型,因此Pebble工作正常。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”指令中指定pebble模板名称,但不带前缀:
{% extends "base" %}
对我来说,这是一个错误。Pebble Spring启动程序应该能够检测到指定的基本模板是否带有后缀。{%extends“base.html.peb”%}而不是{%extends“base_test.html.peb”%}谢谢Pavel。不幸的是,这是我文章中的一个错误。父文件名现在已在postCan中更正,您可以添加一行如何运行模板引擎,例如:PebbleTemplate compiledTemplate=engine.getTemplate(“templates/home.html”)?问题可能在于基本模板路径解析。控制器只返回一个字符串:模板的名称,因此为“child”。我没有看到Pebble with Spring Boot所需的任何其他配置。请尝试:{%extends“base”%}看起来像是resolver adds.html.peb AutomaticallyTanks。附带说明:不会抛出或显示错误,这使得调试非常困难。您知道Pebble就是这样工作的吗,或者我可以启用一些错误输出吗?您可以在上一次会议上提出问题,项目所有者需要检查并应用修复程序。或者,如果您是GitHub注册用户,您可以分叉代码,应用修复程序,并向所有者发出请求,将其包括在项目中。这并不难。GitHub上的文件链接:顺便说一句,我在PHP/Symfony社区项目中使用了Twig。我非常喜欢这个语法,它对我来说非常有效。
@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" %}