Ho Non taglibs dire, io sto usando un tag JSP per fare qualcosa di simile:Thymeleaf ha qualcosa come i tag JSP?
ChildPage.jsp:
<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:layout>
<jsp:attribute name="head">
<link href="css/custom.css" type="text/css" rel="stylesheet"/>
</jsp:attribute>
<jsp:attribute name="scripts">
<script src="js/custom.js"></script>
</jsp:attribute>
<jsp:body>
<p>This is from the child page</p>
</jsp:body>
</t:layout>
layout.tag :
<%@ tag description="Layout template" pageEncoding="UTF-8" %>
<%@ attribute name="head" fragment="true" %>
<%@ attribute name="scripts" fragment="true" %>
<!DOCTYPE html>
<html lang="en">
<head>
<link href="css/main.css" type="text/css" rel="stylesheet"/>
<jsp:invoke fragment="head"/>
</head>
<body>
<div id="body">
<p>This is from the parent or "layout"</p>
<jsp:doBody/>
</div>
<div id="footer">
<script src="js/main.js"></script>
<jsp:invoke fragment="scripts"/>
</div>
</body>
</html>
se fusi:
<!DOCTYPE html>
<html lang="en">
<head>
<link href="css/main.css" type="text/css" rel="stylesheet"/>
<link href="css/custom.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<div id="body">
<p>This is from the parent or "layout"</p>
<p>This is from the child page</p>
</div>
<div id="footer">
<script src="js/main.js"></script>
<script src="js/custom.js"></script>
</div>
</body>
</html>
Questo mi permette di includere script nella sezione di intestazione del JSP sia dal layout e pagine figlio. Lo stesso per il corpo e il piè di pagina.
Ho letto documenti/esempi di Thymeleaf ma forse non sto capendo correttamente perché non sembra che possa fare quello che sto cercando di ottenere.
Il motivo per cui ho "invertito" ciò che sembra una semplice inclusione è che ogni pagina che ho include alcuni script e una sezione di intestazione, ma anche le pagine di mio figlio contengono script da importare e fogli di stile da includere.
Posso raggiungere questo in qualche modo? Sto sbagliando?
non vuoi 'th: replace'? come '
' –@ robertotomás Non voglio sostituire tutti i contenuti all'interno del nodo HTML '
', voglio unire i contenuti. – dkanejsIn realtà non capisco cosa stai facendo .. Immagino che se il tuo esempio avesse più 'jsp: invoke framments' sarebbe diverso, ma nel caso tu l'abbia fornito non è qualcosa che non potresti fare con la semplice sostituzione. –