Hier ist mein Code, in dem ich iteriere:
<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>
Die URL, auf die es verweist, soll /category/edit/<id of the category>
sein.
Es sagt, dass es den Ausdruck nicht analysieren konnte:
Exception evaluating SpringEL expression: "category.id" (category-list:21)
Hallo, ich glaube, dein Problem war ein Schreibfehler
<a th:href="@{'/category/edit/' + ${category.id}}">view</a>
Sie verwenden category.id, aber in Ihrem Code ist idCategory , wie Eddie sagte
Das würde für Sie funktionieren
<a th:href="@{'/category/edit/' + ${category.idCategory}}">view</a>
Eine sauberere und einfachere Möglichkeit, dies zu tun
<a href="somepage.html" th:href="@{|/my/url/${variable}|}">A Link</a>
Ich habe diese Lösung in Thymeleaf Documentation auf "4.8 Literal Substitutions" gefunden.
Der richtige Weg gemäß Thymeleaf-Dokumentation zum Hinzufügen von Parametern ist:
<a th:href="@{/category/edit/{id}(id=${category.idCategory})}">view</a>
Ich habe versucht, eine Liste von Objekten durchzublättern und sie als Zeilen in einer Tabelle anzuzeigen, wobei jede Zeile ein Link ist. Das hat bei mir funktioniert. Ich hoffe es hilft.
// 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>
Ihr Code sieht syntaktisch korrekt aus, aber ich denke, Ihre Eigenschaft existiert nicht, um die URL zu erstellen.
Ich habe es gerade getestet und funktioniert gut für mich.
Versuchen Sie es mit category.idCategory anstelle von category.id, zum Beispiel ...
<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>
"Liste" ist ein Objekt, das vom Backend abgerufen wird und den Iterator zur Anzeige in einer Tabelle verwendet
"minAmount", "MaxAmount" ist eine Objektvariable "mrr" ist eine temporäre Variable, um den Wert abzurufen und mrr das Abrufen von Daten zu wiederholen.
<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>
Ich denke, du kannst es versuchen:
<a th:href="${'/category/edit/' + {category.id}}">view</a>
Oder wenn Sie "idCategory" haben:
<a th:href="${'/category/edit/' + {category.idCategory}}">view</a>