webentwicklung-frage-antwort-db.com.de

Thymeleaf mit Pfadvariablen zu th: href

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)
15
user962206

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>
22
cralfaro

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.

6
douglasmiguel7

Der richtige Weg gemäß Thymeleaf-Dokumentation zum Hinzufügen von Parametern ist:

<a th:href="@{/category/edit/{id}(id=${category.idCategory})}">view</a>
2
Mario Rojas

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>
2
Shahriar

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>
2
Eddie Jaoude

"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>
1

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>
1