Java Thymeleaf应用不同的标题模式

Java Thymeleaf应用不同的标题模式,java,html,spring,spring-mvc,thymeleaf,Java,Html,Spring,Spring Mvc,Thymeleaf,我使用的是最新版本的 我想对我的所有页面使用标题模式$CONTENT\u title-$LAYOUT\u title。因此,我创建了以下布局和内容文件 我的layout.html文件如下所示 <!doctype html> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml"> <head> <title layout:title

我使用的是最新版本的

我想对我的所有页面使用标题模式
$CONTENT\u title-$LAYOUT\u 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>
<!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>
我想要的是

<title>My Company Name</title>
我的公司名称

我怎样才能用一种简单的方式实现这一点?据我所知,我无法使用layout.html中的
$CONTENT\u TITLE
并检查它是否为空,或者我可以吗?

因为我找不到一种方法来使用标题模式的条件,所以我不再使用它,而是使用了中建议的可参数化片段

layout.html

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml">
<head>
    <!-- some scripts and styles --->
</head>
<body>
    <!-- some content --->
</body>
</html>
<!doctype html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
      layout:decorate="~{layout.html}">

<head>
    <th:block th:replace="./fragments/page-title.html :: page-title('My Content Title')"></th:block>
</head>

<body>
    <!-- some content --->
</body>
</html>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="page-title(pageTitle)" th:remove="tag">
    <title th:text="(${pageTitle}? ${pageTitle} + ' - ' : '') + 'My Company Name'"></title>
</head>
</html>
/fragments/page title.html

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml">
<head>
    <!-- some scripts and styles --->
</head>
<body>
    <!-- some content --->
</body>
</html>
<!doctype html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
      layout:decorate="~{layout.html}">

<head>
    <th:block th:replace="./fragments/page-title.html :: page-title('My Content Title')"></th:block>
</head>

<body>
    <!-- some content --->
</body>
</html>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="page-title(pageTitle)" th:remove="tag">
    <title th:text="(${pageTitle}? ${pageTitle} + ' - ' : '') + 'My Company Name'"></title>
</head>
</html>

这导致
我的内容标题-我的公司名称
适用于所有带有附加标题的页面,而
我的公司名称
适用于所有没有附加标题的页面(如我的起始页)。

试着让你的$Content\u Title拥有“时事通讯-”值,并在your layout.html中放置以下行以具有新的标题模式:

<title layout:title-pattern="$CONTENT_TITLE $LAYOUT_TITLE">My Company Name</title>
我的公司名称

这正是我想要避免的,因为我不想在每一页上分别设置破折号“分隔符”。
-
只应定义一次,如
我的公司名称