8.3 弹性布局:超越片段插入
多亏了分段表达式,我们可以给片段指定文本、数字、bean对象之外的参数——标记的片段。
这允许我们以这样一种方式创建模版:正在调用中的模版可以对它们进行补充,从而形成了一种非常具有弹性的模版布局机制。
注意title和links变量在以下片段中的使用:
<head th:fragment="common_header(title,links)"><title th:replace="${title}">The awesome application</title><!-- Common styles and scripts --><link rel="stylesheet" type="text/css" media="all" th:href="@{/css/awesomeapp.css}"><link rel="shortcut icon" th:href="@{/images/favicon.ico}"><script type="text/javascript" th:src="@{/sh/scripts/codebase.js}"></script><!--/* Per-page placeholder for additional links */--><th:block th:replace="${links}" /></head>
我们现在可以像这样调用片段:
...<head th:replace="base :: common_header(~{::title},~{::link})"><title>Awesome - Main</title><link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"><link rel="stylesheet" th:href="@{/themes/smoothness/jquery-ui.css}"></head>...
结果会使用正在调用中的模版里的实际的<title>和<link>标签,把它们作为title和links变量的值,使我们的模版在插入的时候被自定义:
...<head><title>Awesome - Main</title><!-- Common styles and scripts --><link rel="stylesheet" type="text/css" media="all" href="/awe/css/awesomeapp.css"><link rel="shortcut icon" href="/awe/images/favicon.ico"><script type="text/javascript" src="/awe/sh/scripts/codebase.js"></script><link rel="stylesheet" href="/awe/css/bootstrap.min.css"><link rel="stylesheet" href="/awe/themes/smoothness/jquery-ui.css"></head>...
