gpt4 book ai didi

Spring、Thymeleaf 和字符串列表

转载 作者:IT老高 更新时间:2023-10-28 13:56:22 28 4
gpt4 key购买 nike

好的,我是 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;
}
}

我的网页包含以下内容:

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

但它仍然不起作用。无序列表最终为空。 IE。无序标签内没有任何列表项。

我做错了什么?指针欣然接受。

最佳答案

由于没有填充模型的示例,我假设您将一些字符串放入 TestModel 的实例中的列表字段是这样的。

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

然后在您的 Thymeleaf 模板示例中有更多错误。

  1. 如果您通过 th:object 使用对象选择你必须首先使用 asterix *访问对象属性。星号语法评估选定对象上的表达式,而不是上下文变量映射。
  2. 对象选择仅影响 DOM 中的子节点。
  3. 在您的示例中,您想要遍历字符串列表 (List<String>),但您想要访问属性 name实际上在 Java 上不存在 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>

正确的对象选择

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

关于Spring、Thymeleaf 和字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049708/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com