【发布时间】:2015-04-22 03:24:18
【问题描述】:
我正在尝试使用 Thymeleaf 创建一个递归列表。我正在使用一个简单的 Java 对象来对具有两个字段、一个描述和一个子节点数组列表的节点进行建模。我正在使用以下 HTML/Thymeleaf 来处理结构,但它不会递归迭代到下一个级别。
我的 Java 代码如下所示:
public class Node {
public String description;
public ArrayList<Node> children;
}
我的 Thymeleaf/HTML 代码如下:
<html>
...
<body>
<div th:fragment="fragment_node" th:remove="tag">
<ul th:if="${not #lists.isEmpty(node.children)}" >
<li th:each="child : ${node.children}"
th:text="${child.description}"
th:with="node = ${child}"
th:include="this::fragment_node">List Item</li>
</ul>
</div>
</body>
</html>
如果我的数据结构如下所示:
- 主节点 1
- 子节点 1
- 子节点 2
- 主节点 2
- 子节点 3
- 子节点 4
我希望得到:
<ul>
<li>Main Node 1</li>
<li>
<ul>
<li>Child node 1</li>
<li>Child node 2</li>
</ul>
</li>
<li>Main Node 2</li>
<li>
<ul>
<li>Child node 3</li>
<li>Child node 4</li>
</ul>
</li>
</ul>
但是,我只得到:
<ul>
<li>Main Node 1</li>
<li>Main Node 2</li>
</ul>
谁能发现为什么这可能不起作用?
【问题讨论】:
-
有孩子吗?你有没有尝试简化一点?尝试提取
li中的包含并将以下内容放入<div th:with="child = ${child}" th:include="this::fragment_node" th:remove="tag" />。