首页 > 解决方案 > 在 Thymeleaf 中插入模板而不覆盖子项(默认头模板)

问题描述

我已经习惯了th:insertth:replace但是我需要一种方法来在标题中包含一个片段,而不会覆盖头部中的其他标签。

我试过这个,但home.css头部被完全覆盖:

主页.html:

<head th:include="fragments/head :: genericHead">
    <link rel="stylesheet" href="home.css">
</head>

头部模板:

<head th:fragment="genericHead">
    <link rel="stylesheet" href="common.css">
</head>

我想要某种方法来执行 th:add 或类似的操作,以便将两个链接都作为子链接,head并导致如下结果:

<head>
    <link rel="stylesheet" href="common.css">
    <link rel="stylesheet" href="home.css">
</head>

标签: htmlspringspring-bootspring-mvcthymeleaf

解决方案


您可以将th:blockth:include/一起使用th:replace

home.html会看起来像:

<head>
    <th:block th:include="fragments/head :: genericHead"></th:block>
    <link rel="stylesheet" href="../static/home.css">
</head>

片段看起来完全一样:

<head th:fragment="genericHead">
    <link rel="stylesheet" href="common.css">
</head >

th:block执行 theinclude然后它会消失(所以它可以是 ainclude也可以是 a replace,毕竟没关系)给我们留下片段标签的内容。


推荐阅读