我可以改变Thymeleaf“包含”优先权吗?

时间:2017-03-19 01:42:22

标签: html css thymeleaf

我使用Thymeleaf的“head”片段存储我的css链接。

我还有一个独特的css文件,我只想应用于给定的页面。我实现这一目标的第一次尝试是下面的方法。

<head th:include="fragments/head :: head">
    <link rel="stylesheet"  th:href="@{/css/create-post.css}" />
</head>

然而,似乎片段中的css文件插入 头标记的当前内容。这是一个问题,因为在create-post.css中希望覆盖一些样式。

有没有办法改变Thymeleaf如何插入头标记的优先级?

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确,但让我试一试......

建议1)我有一个小项目,其中每个页面都包含一些javascript-s,而某些页面包含特定于页面的脚本。以下是头部片段的定义:

<head th:fragment="common_header(title, scripts)">

    <title th:replace="${title}">A title</title>

    <!-- Common scripts -->
    <script 
        src="/js/jquery/jquery.min.js"
        th:src="@{/js/jquery/jquery.min.js}">
    </script>

    ...

    <th:block th:replace="${scripts}">
    </th:block>

</head>

这是一个特定的页面,它不仅需要jQuery,还需要一个额外的脚本来支持reCAPTCHA:

<head th:replace="/fragments/commonheader :: common_header(~{::title},~{::script})">

    <title>Register a new user</title>

    <script th:src="@{https://www.google.com/recaptcha/api.js}"></script>

</head>

建议2)th:include外,还有th:replace。虽然th:include将片段的内容包含在其主机标签中,但th:replace实际上将用片段替换主机标签。详情here

我希望这些想法可能有所帮助。