Edit:
Die folgende Frage ist gelöst! Es kann mit Includes and Fragments erfolgen.
Sam, obwohl Ihre Antwort Satsfactory ist, um einen Teil meiner Probleme zu lösen, habe ich noch einen Zweifel.
Diese Methode ersetzt ein Element und alle seine Vorfahren durch die im Layout angegebenen Elemente und behält den Inhalt des ursprünglichen Elements bei.
Es funktioniert gut für Layouts, aber wie ersetzen Sie nur den Inhalt eines Fragments?
Nehmen wir an, ich habe das folgende Szenario. Ich entwickle eine Bibliothek von Bootstrap-Widgets. Einige Widgets, wie Navbar, haben interne Container und diese Container enthalten andere Elemente. Bsp .:
Fragmente/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>
Innen-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>
und nutzen Sie die folgende Ausgabe:
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>
Verstehen Sie den Unterschied? Die Art und Weise, wie du mir gezeigt hast, ersetzt das Element und seine Vorfahren, behält aber den Inhalt bei. Das Ergebnis ist der gesamte Dokumentstamm, der ersetzt wird.
In einigen Situationen muss ich nur das zu ersetzende Element ersetzen. Ich muss auch seine Eltern und Inhalte behalten.
Wie gesagt, es ist gelöst. Hier geht ein Beispiel dafür, wie dies zu implementieren:
Layouts/navbar.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>`
document.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>
Ist es wirklich notwendig Namespaces zu erklären? Ich habe es ohne Namespace-Deklarationen gemacht und alles funktioniert wie ein Zauber. – Natanael
Sam, obwohl deine Antwort satsfactory ist, um einen Teil meiner Probleme zu lösen, habe ich noch Zweifel. Mehr Details unten – Natanael