当我在括号中调用它时,Thymeleaf 不会解析我的应用程序中的片段。这是为啥?

Posted

技术标签:

【中文标题】当我在括号中调用它时,Thymeleaf 不会解析我的应用程序中的片段。这是为啥?【英文标题】:Thymeleaf does not resolve fragment in my app when I call it in brackets. Why is that?当我在括号中调用它时,Thymeleaf 不会解析我的应用程序中的片段。这是为什么? 【发布时间】:2017-07-21 10:29:59 【问题描述】:

我是春天和百里香的新手。 我有一个带有 thymeleaf 的 spring-boot Web 应用程序,但遇到了一个问题。 这条线完美运行:

<footer th:replace="fragments/footer :: footer">Footer</footer>

但是当我在它周围写上括号时,就像在 documentation 中一样,我得到一个错误。

<footer th:replace="~fragments/footer :: footer">Footer</footer>

错误:

出现意外错误(类型=内部服务器错误,状态=500)。 解析模板“~fragments/footer”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问(索引:11)

那么可能是什么问题,我使用默认的spring boot配置。 pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

日志:

2017-03-01 22:47:51.585 ERROR 4014 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] 异常处理模板“index”:解析模板“~fragments/footer”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问(索引:11) 2017-03-01 22:47:51.591 错误 4014 --- [nio-8080-exec-1] oaccC[.[.[/].[dispatcherServlet]:Servlet.service() 用于 servlet [dispatcherServlet] path [] 抛出异常 [请求处理失败;嵌套异常是 org.thymeleaf.exceptions.TemplateInputException: Error resolve template "~fragments/footer", template may not exist or may not be accessible by any configured Template Resolvers (index:11)] 根本原因 org.thymeleaf.exceptions.TemplateInputException:解析模板“~fragments/footer”时出错,模板可能不存在或可能无法被任何配置的模板解析器访问(索引:11) 在 org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] 在 org.thymeleaf.standard.fragment.StandardFragment.extractFragment(StandardFragment.java:202) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] 在 org.thymeleaf.standard.processor.attr.AbstractStandardFragmentHandlingAttrProcessor.computeFragment(AbstractStandardFragmentHandlingAttrProcessor.java:72) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] 在 org.thymeleaf.processor.attr.AbstractFragmentHandlingAttrProcessor.processAttribute(AbstractFragmentHandlingAttrProcessor.java:63) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE]

【问题讨论】:

【参考方案1】:

看起来您正在使用 thymeleaf 2。片段表达式是 thymeleaf 3 的新功能。

http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html#fragment-expressions

【讨论】:

谢谢,我以为 spring-boot-starter-thymeleaf 会使用 thymeleaf 3。我将它添加到我的 pom.xml 中,它工作正常。 &lt;properties&gt; &lt;thymeleaf.version&gt;3.0.2.RELEASE&lt;/thymeleaf.version&gt; &lt;thymeleaf-layout-dialect.version&gt;2.1.1&lt;/thymeleaf-layout-dialect.version&gt; &lt;/properties&gt;

以上是关于当我在括号中调用它时,Thymeleaf 不会解析我的应用程序中的片段。这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章

当我在索引中调用它时,我的另一个需要一旦 php 页面出错

我如何在 fetch 调用中解析简单的 json 响应

android 12 onBackPressed

这个mysql行不会调用结果吗?

Parse.com cloudcode 从不输入成功/错误

Node.js body-parser 不会解析 json 中带方括号的输入名称