Grazie mille, ho capito tutto, sei stato davvero molto chiaro.
Con ~{...} ho trovato questo esempio (una cosa simile a th:include):
Esempio:
<div th:insert="~{footer :: copy}"></div>
Il codice sopra inserisce in una pagina html un tag specifico definito altrove.
Il codice ~{...} può essere omesso infatti
<div th:insert="footer :: copy"></div>
produce lo stesso effetto del
codice seguente:
<div th:insert="~{footer :: copy}"></div>
Se definisco il seguente tag in una pagina .html:
<footer th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</footer>
posso riutilizzare lo stesso tag in un'altra pagina in questo modo:
<body>
...
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
</body>
Il risultato è il seguente:
<body>
...
<div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
</div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
<div>
© 2011 The Good Thymes Virtual Grocery
</div>
</body>
Quello che non capisco è questo oggetto "speciale". Nel form che sto leggendo:
https://www.baeldung.com/registration-with-spring-mvc-and-spring-security
trovo questo pezzo.
<p th:each="error: ${#fields.errors('firstName')}"
th:text="${error}">Validation error</p>
Questo fields.errors è un oggetto speciale di java?
<!--/* La variabile #{...} può essere definita in un file .properties. */-->
<h1 th:text="#{label.form.title}">Form</h1>
<!--/* La variabile ${...} è un oggetto classico di java creato per contenere i parametri inviati dal form. */-->
<form action="/" th:object="${user}" method="POST" enctype="utf8">
<div>
<label th:text="#{label.user.firstName}">first</label>
<!--/* La variabile *{...} è una variabile dell'oggetto definito in th:object="${...}". */-->
<input th:field="*{firstName}"/>
<!--/* th:each="X: ${L}" è un ciclo for. L è un oggetto lista mentre X l'oggetto che compone tale lista. */-->
<!--/* ${#...} definisce un oggetto speciale di java. ?????? lo devo creare???? esiste già???? */-->
<p th:each="error: ${#fields.errors('firstName')}"
th:text="${error}">Validation error</p>
</div>
Questo ${#fields.errors('firstName')} potrebbe essere un oggetto speciale di Spring Boot creato dalle annotazioni @NotNull e @NotEmpty di UserDto e quindi non dovrei assolutamente preoccuparmene?