如何使用Thymeleaf Layout Dialect覆盖子模板中的装饰器参数

时间:2014-09-17 13:36:35

标签: thymeleaf

我正在使用Thymeleaf Layout Dialect。

我有一个“defaultLayout”模板,其中title元素定义如下:

<title layout:title-pattern="$DECORATOR_TITLE" 
           th:text="${pageTitle}">Page Title</title>

其中pageTitle是从子模板(“home.html”)传递的变量,如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  layout:decorator="defaultLayout"
  th:with="pageTitle='Home'">

到目前为止一切顺利。但是我现在想要“扩展”“home.html”模板(“foo.html”)。例如:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  layout:decorator="home"
  th:with="pageTitle='Foo'">

问题在于,当呈现“foo.html”时,它会获得页面标题“Home”而不是“Foo”。

Thymeleaf在这里有过错吗?它不应该用“Foo”替换“pageTitle”属性吗?有没有更好的方法来做到这一点,我错过了?

1 个答案:

答案 0 :(得分:0)

您需要做的就是以下

home.html中将html部分更改为:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  layout:decorator="defaultLayout"
  th:with="${null != pageTitle ? pageTitle : 'Home'}">