Thymeleaf - passe des variables aux fragments
Sep 21 2020
J'ai le modèle suivant avec le fragment où je passe la variable:
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" /> </span> <a> <th:block th:include=" :: inner(${item})" />
</a>
</div>
<th:block th:fragment="inner(item)">
[[${item.name}]]
</th:block>
Si j'essaye de le rendre, j'obtiens une erreur disant:
Property or field 'name' cannot be found on null
Si je le rend comme ça
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" />
[[${item.name}]] </span> <a> <th:block th:include=" :: inner(${item})" />
</a>
</div>
Qu'est-ce que je fais mal lors de l'attribution d'une variable à un fragment?
Réponses
michal.jakubeczy Sep 21 2020 at 21:47
Deviner.
La raison de l'erreur était que le fragment «interne» était rendu pendant le rendu avec le fragment principal. Donc, avec les inclusions, si a été rendu par lui-même. Et ce dernier rendu l'a gâté.
Les solutions possibles sont les suivantes:
- déplacer le fragment interne vers un autre fichier
- ajouter
th:if="false"au fragment «interne» pour éviter le rendu automatique (les inclusions continueront de fonctionner).