Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Pebble模板继承失败,没有错误_Java_Spring_Spring Boot_Pebble - Fatal编程技术网

Java Pebble模板继承失败,没有错误

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

我在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
  • 弹簧启动安全
我有以下application.properties

  • pebble.suffix=.html.peb
  • pebble.cache=false(也尝试为true)
我的父模板(resources/templates/base.html.peb)


当我删除继承时,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" %}