web-dev-qa-db-ja.com

春、Thymeleaf、文字列のリスト

さて、私はSpring and Thymleafの初心者です。私はとても簡単なことをやろうとしているので、それは非常に簡単です。しかし、私はそれを機能させることができません。単純な質問は、Webページに文字列のリストをどのように表示するかです。

私は次のモデルを持っています

import Java.util.List;
public class TestModel {

    private List<String> list = null;
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public List<String> getList() { return list; }

    public void setList(final List<String> list) {
        this.list = list;
    }
}

私のウェブページには以下が含まれています:

<div th:if="${greeting.list != null}">
    <h1>Result</h1>
    <ul>
    <th:block th:object="${greeting}" th:each="item : ${list}">
     <li th:text="${item.name}">Item description here...</li>
    </th:block>
    </ul>
</div>

「.name」を「item」に追加したのは、文字列のリストがあり、同様のことを行った例をいくつか見つけたからです。しかし、オブジェクトには「.name」がありました。

しかし、それでも機能しません。順序付けられていないリストは空になります。つまり順序付けられていないタグ内にリストアイテムはありません。

am私は間違っていますか?ポインタは喜んで受け入れました。

13
Lori Cook

モデルを埋める例はないので、TestModelのリストフィールドのインスタンスに、次のようにいくつかの文字列を挿入することにしました。

TestModel greeting= new TestModel();
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
model.addAttribute("greeting", greeting);

次に、Thymeleafテンプレートの例にさらにエラーがあります。

  1. th:objectによるオブジェクト選択を使用している場合、最初にアスタリスク*を使用してオブジェクトプロパティにアクセスする必要があります。アスタリスク構文は、コンテキスト変数マップではなく、選択したオブジェクトの式を評価します。
  2. オブジェクトの選択は、DOMの子ノードにのみ影響します。
  3. あなたの例では、文字列のリスト(List<String>)を反復処理したいが、実際には存在しないプロパティnameにアクセスしたいJava Stringオブジェクト。

Thymeleafテンプレートを1つの方法で修正する必要があります-例を参照してください。

オブジェクトをまったく選択しない

<div th:if="${greeting.list != null}">
    <h1>Result</h1>
    <ul>
       <li th:each="item : ${greeting.list}" th:text="${item}">Item description here...</li>
    </ul>
</div>

適切なオブジェクトの選択

<div th:if="${greeting.list != null}">
    <h1>Result</h1>
    <ul>
    <th:block th:object="${greeting}">
       <li th:each="item : *{list}" th:text="${item}">Item description here...</li>
    </th:block>
    </ul>
</div>
22
michal.kreuzman
<table th:object="${userList}" id="userTable" border="1">
    <tr th:each="user :${userList}">
        <td  th:text="${user.getName()}"></td>
        <td  th:text="${user.getEmail()}"></td>
    </tr>
</table>

テーブルとオブジェクトを使用した別の例。他の誰かに役立つかもしれません。

1
Rakesh Goswami