编辑:
下面的问题就解决了!可以使用Includes 和 Fragments来完成。
山姆,尽管您的回答足以解决我的部分问题,但我仍然有疑问。
此方法将元素及其所有祖先替换为布局中指定的元素,并保留原始元素的内容。
它适用于布局,但是只替换片段的内容怎么样?
假设我有以下情况。我正在开发一个引导小部件库。一些小部件,如导航栏有内部容器,而这个容器将包含其他元素。前任。:
片段/navbar.html
<!-- navbar -->
<div th:fragment="navbar" class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">Awesome Thymeleaf Navbar</a>
<ul class="nav">
<!-- children goes here -->
</ul>
</div>
</div>
<div>
在 index.html 中
This is my Navbar:
<div th:replace="fragments/navbar :: navbar">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</div>
并得到以下输出:
This is my Navbar:
<!-- navbar -->
<div th:fragment="navbar" class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">Awesome Thymeleaf Navbar</a>
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
</div>
<div>
你明白其中的区别吗?他们向我展示的方式替换了元素及其祖先,但保留了内容。结果是整个文档根被替换。
在某些情况下,我只需要替换被替换的元素。我也需要保留它的父母和内容。
正如我所说,它已经解决了。下面是一个如何实现的示例:
布局/导航栏.html:
<!DOCTYPE html>
<html>
<body>
<div layout:fragment="navbar" class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">Navbar</a>
<ul class="nav" layout:fragment="navbar-content">
<!-- children goes here -->
</ul>
</div>
</div>
</body>
</html>`
文档.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Home</title>
</head>
<body>This is my Navbar:
<div layout:include="layouts/navbar :: navbar" th:remove="tag">
<ul layout:fragment="navbar-content">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
</body>
</html>