web-dev-qa-db-ja.com

th:hrefへのパス変数を使用したThymeleaf

私が繰り返し処理しているコードは次のとおりです。

      <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 Eddieが言ったように

これはあなたのために働くだろう

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

これを行うよりクリーンで簡単な方法

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

このソリューションは、「4.8 Literal substitutions」の Thymeleaf Documentation で見つけました。

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.idの代わりにcategory.idCategoryを使用してみてください...

  <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

これを試すことができると思います:

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

または、これに「idCategory」がある場合:

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