Voici mon code que j'itère dans:
<tr th:each="category : ${categories}">
<td th:text="${category.idCategory}"></td>
<td th:text="${category.name}"></td>
<td>
<a th:href="@{'/category/edit/' + ${category.id}}">view</a>
</td>
</tr>
L'URL à laquelle il pointe est supposé être /category/edit/<id of the category>
Il dit qu'il ne peut pas analyser l'expression:
Exception evaluating SpringEL expression: "category.id" (category-list:21)
Salut, je pense que votre problème était une erreur de type
<a th:href="@{'/category/edit/' + ${category.id}}">view</a>
Vous utilisez category.id mais dans votre code est idCategory comme dit Eddie
Cela fonctionnerait pour vous
<a th:href="@{'/category/edit/' + ${category.idCategory}}">view</a>
Un moyen plus propre et plus facile de le faire
<a href="somepage.html" th:href="@{|/my/url/${variable}|}">A Link</a>
J'ai trouvé cette solution dans Documentation Thymeleaf sur "4.8 Substitutions littérales".
La bonne méthode selon la documentation Thymeleaf pour l’ajout de paramètres est:
<a th:href="@{/category/edit/{id}(id=${category.idCategory})}">view</a>
J'essayais de parcourir une liste d'objets, de les afficher sous forme de lignes dans une table, chaque ligne constituant un lien. Cela a fonctionné pour moi. J'espère que ça aide.
// CUSTOMER_LIST is a model attribute
<table>
<th:block th:each="customer : ${CUSTOMER_LIST}">
<tr>
<td><a th:href="@{'/main?id=' + ${customer.id}}" th:text="${customer.fullName}" /></td>
</tr>
</th:block>
</table>
Votre code semble syntaxiquement correct, mais je pense que votre propriété n’existe pas pour créer l’URL.
Je viens de le tester et fonctionne bien pour moi.
Essayez d’utiliser category.idCategory au lieu de category.id, par exemple ...
<tr th:each="category : ${categories}">
<td th:text="${category.idCategory}"></td>
<td th:text="${category.name}"></td>
<td>
<a th:href="@{'/category/edit/' + ${category.idCategory}}">view</a>
</td>
</tr>
"List" est un objet récupéré depuis le backend et utilisant un itérateur pour s'afficher dans un tableau.
"minAmount", "MaxAmount" est une variable d'objet "mrr" est une variable temporaire juste pour obtenir une valeur et itérer mrr pour obtenir des données.
<table class="table table-hover">
<tbody>
<tr th:each="mrr,iterStat : ${list}">
<td th:text="${mrr.id}"></td>
<td th:text="${mrr.minAmount}"></td>
<td th:text="${mrr.maxAmount}"></td>
</tr>
</tbody>
</table>
Je pense que vous pouvez essayer ceci:
<a th:href="${'/category/edit/' + {category.id}}">view</a>
Ou si vous avez "idCategory" ceci:
<a th:href="${'/category/edit/' + {category.idCategory}}">view</a>