it-roy-ru.com

Thymeleaf с использованием переменных пути к th: href

Вот мой код, который я повторяю:

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

URL, на который он указывает, должен быть /category/edit/<id of the category>

Он говорит, что не может разобрать выражение:

      Exception evaluating SpringEL expression: "category.id" (category-list:21)
15
user962206

Привет, я думаю, что ваша проблема была ошибка типа

<a th:href="@{'/category/edit/' + ${category.id}}">view</a>

Вы используете category.id, но в вашем коде есть idCategory , как сказал Эдди

Это будет работать для вас 

<a th:href="@{'/category/edit/' + ${category.idCategory}}">view</a>
22
cralfaro

Более чистый и простой способ сделать это

<a href="somepage.html" th:href="@{|/my/url/${variable}|}">A Link</a>

Я нашел это решение в Документация Thymeleaf на "4.8 Буквальные замены".

6
douglasmiguel7

Правильный путь в соответствии с документация Thymeleaf для добавления параметров это:

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

Я пытался просмотреть список объектов, отобразить их в виде строк в таблице, где каждая строка является ссылкой. Это сработало для меня. Надеюсь, поможет.

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

Ваш код выглядит синтаксически правильным, однако я думаю, что ваше свойство не существует для создания URL.

Я только что проверил и отлично работает для меня. 

Попробуйте использовать category.idCategory вместо category.id, например ...

  <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

«Список» - это объект, получаемый из бэкэнда и использующий итератор для отображения в таблице.

"minAmount", "MaxAmount" - это переменная объекта "mrr" - это просто временная переменная для получения значения и итерация mrr для получения данных.

<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
Shanmukh Sravanth

Я думаю, что вы можете попробовать это:

<a th:href="${'/category/edit/' + {category.id}}">view</a>

Или, если у вас есть «idCategory» это:

<a th:href="${'/category/edit/' + {category.idCategory}}">view</a>
1
Denis Marennikov