Spring,Thymleaf和字符串列表

Lor*_*ook 13 spring thymeleaf

好吧,我是Spring和Thymleaf的新手.我正在尝试做一些如此简单的事情,这应该是一个明智的选择.但我无法让它发挥作用.简单的问题是 - 如何在网页中显示字符串列表?

我有以下型号

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的网页包含以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

我将".name"添加到"item"只是因为我找到了几个例子,他们有一个字符串列表并做了类似的事情.但是他们在对象上有".name".

但它仍然无效.无序列表最终为空.即无序标签内没有任何列表项.

什么我哪里做错了?指针很高兴接受.

mic*_*man 22

由于没有填充模型的例子,我认为你把一些字符串放到TestModel像这样的列表字段的实例中.

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

然后,您的Thymeleaf模板示例中会出现更多错误.

  1. 如果您正在使用对象选择,则th:object必须首先使用asterix *来访问对象属性.星号语法评估所选对象上的表达式而不是上下文变量映射.
  2. 对象选择仅影响DOM中的子节点.
  3. 在您的示例中,您希望迭代字符串列表(List<String>)但您想要访问nameJava String对象上实际上不存在的属性.

您必须以一种方式修复您的Thymeleaf模板 - 请参阅示例.

根本没有对象选择

<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>
Run Code Online (Sandbox Code Playgroud)

适当的对象选择

<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>
Run Code Online (Sandbox Code Playgroud)

  • 您好,没关系,我希望我的例子可以帮助您解决这个问题。我可以推荐官方 Thymeleaf 文档。它很容易阅读并且充满了示例。官方网站上也有一些教程。检查http://www.thymeleaf.org/documentation.html (2认同)