当前位置: 首页 > 知识库问答 >
问题:

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

荀增
2023-03-14

我在版本1.5.7中有一个简单的Spring Boot应用程序,我正在尝试将其迁移到版本2.0.0。我快完成了,但还有最后一块不见了,那就是胸腺叶。

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

我有所有的模板src/main/Resources/tem板。另外,我有布局称为默认在src/main/资源/模板/布局看起来像这样:

<!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/templates/fragments中本地化的导航片段

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

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

我也尝试过layout:data-layout-decoration=~{layout/default}和layout:data-layout-decoration=~{layout/default.html}

我手动添加了thymeleaf方言依赖项:

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

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


共有2个答案

慕震博
2023-03-14

Spring Boot 2不捆绑Thymeleaf 2.0而是3.0。虽然整体语法保持不变,但在幕后有了许多变化。似乎你没有Thymeleaf的问题,但布局插件,因为你的登录页面渲染,但只是布局不适用。在Thymeleaf 3.0中,布局插件已从零开始重写

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

赏彭薄
2023-03-14

谢谢Smajl,添加

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

也为我解决了这个问题。

 类似资料:
  • 我有一个在docker容器中运行的nodejs API,我想使用Kong作为API-gateway。Kong将在另一个docker容器中运行。当我使用docker-compose启动API容器和Kong容器时,Kong容器抛出一个错误声明;

  • 注意: Adobe Muse 不再添加新增功能,并将于 2020 年 3 月 26 日停止支持。有关详细信息和帮助,请参阅 Adobe Muse 服务结束页面。 Adobe Muse 2016 年 2 月发布的版本及更高版本支持响应式设计。如果您在早于 2016 年 2 月的版本中创建了网站,则可以将您的网站转换为响应式设计。 为何要迁移到响应式布局? 如果已有使用替代布局的 Adobe Muse

  • stop-task 命令用于停止数据迁移任务。有关 stop-task 与 pause-task 的区别,请参考暂停数据迁移任务中的相关说明。 help stop-task stop a specified task Usage: dmctl stop-task [-s source ...] <task-name | task-file> [flags] Flags: -h, --hel

  • 问题内容: 在sails.js中,我们如何停止将模式自动迁移到数据库中。有时,由于迁移会产生错误。有没有一种方法可以使迁移仅在部署应用程序时运行? 问题答案: 您也可以尝试如下操作:

  • 我已经将我们的项目迁移到androidx,现在该应用程序在API21及以上版本上运行,但在API21及以上版本下无法运行。这款应用正在使用multidexing,之前也一直在使用,运行良好。现在我只是得到一个致命的信号11和没有更多有用的日志时,应用程序崩溃。该系统在空气污染指数21或以上时仍然运作良好。你有什么线索或暗示我如何更接近解决这个问题吗?

  • 在生成中更新依赖项后。gradle(模块:app)在gradle脚本中,所有由R定义的布局、字符串和所有引用都不可用。我在模块应用程序中有以下代码: 在搜索项目时,通过项目资源管理器,项目似乎不再有R文件。