0

我对 Thymeleaf 和 SpringBoot 还是有点陌生​​。

我一直在尝试使用百里香片段将带有所有javascript映射的块注入页面-dashboardAdmin.html。

我已经能够使用传统的片段正确地注入带有块的片段,但是由于我必须注入多个不在 html 模板中的任何标签内的脚本标签,所以我无法使用传统的方法。

我在这里发现了一个类似的问题 ,并遵循了提供的具体解决方案,但仍然没有成功,我已经添加了依赖项。也许有某种我不知道的语法错误。由于我在这方面找不到太多参考资料,任何人都可以在这方面给我建议吗?

这是包含要插入其他页面的所有模板的fragment.html

<body>
<th:block layout:fragment="script">
    <script th:src="@{/vendor/login_v14/vendor/jquery/jquery-3.2.1.min.js}"></script>
    <!-- Bootstrap 4 -->
    <script th:src="@{/vendor/bootstrap/js/bootstrap.bundle.min.js}"></script>
    <!-- jsGrid -->
    <script th:src="@{/vendor/jsgrid/demos/db.js}"></script>
    <script th:src="@{/vendor/jsgrid/jsgrid.min.js}"></script>
    <!-- AdminLTE App -->
    <script th:src="@{/js/main.js}"></script>
</th:block>
</body>

虽然这是我将块注入到的页面模板-dashboardAdmin.html

<!DOCTYPE html>
<html lang="fr" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html"
             xmlns:layout="http://www.w3.org/1999/xhtml"
             layout:decorate="~{fragments/fragments}">
<head th:replace="fragments/fragments :: head">
</head>
<body class="hold-transition sidebar-mini">

<!--js scripts-->
<th:block layout:fragment="script">

</th:block>
</body>

如果有人能告诉我我在这里做错了什么,将不胜感激:D!

4

1 回答 1

0

我认为您可以简化 HTML 以获得所需的内容。

在您的dashboardAdmin.html中,在您要放置片段的位置插入类似这样的内容:

<div th:replace = "fragment.html :: script1">
</div>

"fragment.html"(如果您的片段 HTML 文件位于资源目​​录中的其他位置,您可能需要进行调整。)

在你的fragment.html,你可以使用这样的东西:

<th:block th:fragment="script1">
    <div>your content here, instead of this div</div>
</th:block>

<th:block th:fragment="script2">
    <div>your content here, instead of this div</div>
</th:block>

就我而言,这是片段文件的全部内容 - 但显然您可以用<div>...</div>您问题中的所有 HTML 替换我的内容。

为了说明,我在上面的示例中包含了 2 个单独的命名片段。

“script1”块的内容(但不是包含块本身)将被插入到您的dashboardAdmin.html页面中。

如果我正确理解了您的问题,应该就这么简单。基本上,该方法应该与您提到您已经能够将片段插入其他 HTML 文件的方式没有什么不同。

于 2020-02-29T23:43:14.353 回答