首页 > 解决方案 > Thymeleaf 应用不同的标题模式

问题描述

我正在使用最新版本的thymeleaf 页面布局

我想为$CONTENT_TITLE - $LAYOUT_TITLE我的所有页面使用标题模式。因此,我创建了以下布局和内容文件。

我的layout.html文件看起来像

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml">
<head>
    <title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">My Company Name</title>
    <!-- some scripts and styles --->
</head>
<body>
    <!-- some content --->
</body>
</html>

我的content.html样子

<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
      layout:decorate="~{layout.html}">
<head>
    <title>
        <th:block th:if="${meta.pageTitle}" th:text="${meta.pageTitle}"></th:block>
    </title>
</head>
<body>
    <!-- some content --->
</body>
</html>

如果内容页面Newsletter作为属性的值pageTitle并且我在浏览器中调用内容页面,我会得到正确的结果:

<title>Newsletter - My Company Name</title>

如果我的内容页面没有标题,我只想$LAYOUT_TITLE在我的<title>标签中显示不带前导分隔符的-。但是,我得到了我的代码

<title>- My Company Name</title>

我想要的是

<title>My Company Name</title>

我怎样才能以简单的方式实现这一目标?据我所知,我不能$CONTENT_TITLE在 layout.html 中使用并检查它是否为空,或者可以吗?

标签: javahtmlspringspring-mvcthymeleaf

解决方案


尝试简单地使您的$CONTENT_TITLE具有“ Newsletter - ”值,并在您的 layout.html 中放入以下行以获得新的标题模式:

<title layout:title-pattern="$CONTENT_TITLE $LAYOUT_TITLE">My Company Name</title>

推荐阅读