如何使用带有布局的Thymeleaf重用标题标签?

时间:2016-03-27 16:22:49

标签: html html5 layout thymeleaf

如何更改布局以在其他标签上重复使用Template中的相同标题文本,避免重复模板文件上的文本?见例:

有这个布局:

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
    <head>
        <meta charset="UTF-8">
        <title>Title from LAYOUT</title>
    </head>
    <body>
        <h1>Title from LAYOUT</title>
        <th:block layout:fragment="content">Default content</th:block>
    </body>
</html>

这个模板:

<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorator="layout">
    <head>
        <title>Title from TEMPLATE</title>
    </head>
    <body>
        <th:block layout:fragment="content"><p>My content</p></th:block>
    </body>
</html>

所需的呈现页面是:

<html>
    <head>
        <meta charset="UTF-8">
        <title>Title from TEMPLATE</title>
    </head>
    <body>
        <h1>Title from TEMPLATE</title>
        <p>My content</p>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

我发现解决方案在h1中添加了一个片段块,并在title元素中包含layout:include="this :: title"属性。

布局:

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
    <head>
        <meta charset="UTF-8">
        <title layout:include="this :: title">Title from LAYOUT</title>
    </head>
    <body>
        <h1><th:block layout:fragment="title">Title from LAYOUT</th:block></h1>
        <th:block layout:fragment="content">Default content</th:block>
    </body>
</html>

模板:

<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorator="layout">
    <th:block layout:fragment="title">Title from TEMPLATE</th:block>
    <th:block layout:fragment="content"><p>My content</p></th:block>
</html>

答案 1 :(得分:0)

你不应该在同一页面上有2个多个(HTML&amp; Head&amp; Body&amp; Title)标签,你应该删除它们并将每个东西放在一个Body中,

答案 2 :(得分:-1)

这样做不仅需要HTML / CSS。我将以PHP(服务器端语言)提供我的示例,但请注意,您可以使用Javascript或任何其他编译的脚本Web语言,如python,pearl,Ruby on rails(可能以前从未使用过),JSP(Java Server Side)页面)以及更多...如果您的服务器上安装了PHP,那么这里的代码将回答您的问题。 :)

<?php $myTitle = "This is my title!"; ?>

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta charset="UTF-8">
    <title><?php echo $myTitle; ?></title>
</head>
<body>
    <h1><?php echo $myTitle; ?></title>
    <th:block layout:fragment="content">Default content</th:block>
</body>

这里发生了什么?在第1行的PHP中,你声明一个变量等于你的html中的一些文本......用行:你执行一点PHP来输出变量$ myTitle中的任何内容。 PHP在服务器上执行,不会发送给查看该页面的用户,因此如果您在任何网站上查找,您将无法找到它...