迁移到Thymeleaf 3后,Thymeleaf停止解析布局模板

时间:2018-03-12 09:23:39

标签: java spring-boot thymeleaf

我在1.5.7版本中有一个简单的Spring Boot应用程序,我正在尝试将其迁移到2.0.0版本。我差不多完成但最后一件丢失,那就是Thymeleaf。

在旧版本中一切正常,但在迁移后,Spring Boot停止解析任何模板(包括页面和电子邮件)。

我有所有模板src/main/resources/templates。另外,我在src/main/resources/templates/layout中有一个名为default的布局,如下所示:

<!DOCTYPE html>
<html>
<head th:replace="fragments/header :: head"></head>
<body>

    <div id="page">
        <nav class="navigation" th:replace="fragments/navigation"></nav>

        <div class="container">
            <div layout:fragment="container"></div>
        </div>
    </div>
</body>
</html>

我的网页链接到此布局,如下所示:

<!DOCTYPE html>
<html lang="en"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  layout:decorate="layout/default">

<body>

    <div layout:fragment="container">
...
</body>
</html>

导航片段位于src/main/resources/templeats/fragments

在Spring Boot 2中,渲染了登录页面,但未应用布局(因此缺少导航栏和样式)。版本2.0.0中有什么变化吗?我在官方文档或移民指南中没有找到任何解决方案。

编辑:正如答案中所建议的,它是由迁移到Thymeleaf 3引起的。我更新了我的问题,其中一些更改反映了迁移指南,但代码仍未注入布局。

我已尝试layout:data-layout-decorate=~{layout/default}和布局:data-layout-decorate =〜{layout / default.html}以及

我通过手动添加百日咳方言依赖来实现它:

compile('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')

但我认为这应该是Spring中已经存在的传递依赖,我不应该手动添加它...

2 个答案:

答案 0 :(得分:3)

谢谢Smajl,添加

<dependency>
    <groupId> nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

也为我解决了这个问题。

答案 1 :(得分:1)

Spring Boot 2不捆绑Thymeleaf 2.0但3.0。虽然总体语法保持不变,但引擎盖下有很多变化。看起来你没有遇到Thymeleaf的问题,但是你的登录页面渲染了布局插件,但是没有应用布局。布局插件已从头开始重写为Thymeleaf 3.0

布局Dialect 2.0迁移指南:https://ultraq.github.io/thymeleaf-layout-dialect/MigrationGuide.html Thymeleaf 3.0迁移指南:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html