gpt4 book ai didi

java - 如何在thymeleaf中动态创建多个嵌套对象

转载 作者:行者123 更新时间:2023-12-02 09:50:25 28 4
gpt4 key购买 nike

目前我正在制作发布时事通讯的网站。我想在每个帖子下发布并显示评论。

我的帖子

  • 第一条评论
    • 对第一条评论的评论
      • 对第二条评论的评论-所以...
  • 第二条评论
  • 第三条评论

我知道如何在具有一层嵌套的循环中动态创建元素。但如何创建多重嵌套?

例如,我可以创建评论:

<div class='comments' th:each="comment : ${comments}">
<div class='comment' th:text='comment'/>
</div>

如何创建多重嵌套?

<div class='comments' th:each="comment : ${comments}">
<div class='comment' th:text='comment'>
<div class='comment' here comment to comment/>
etc..
</div>
</div>

最佳答案

我认为你必须使用 fragments 来执行此操作。例如,对于这样的对象:

对象

class Comment {
private String text;
private List<Comment> children = new ArrayList<>();

public Comment(String text, Comment... children) {
this.text = text;
this.children.addAll(Arrays.asList(children));
}

public String getText() {return text;}
public void setText(String text) {this.text = text;}

public List<Comment> getChildren() {return children;}
public void setChildren(List<Comment> children) {this.children = children;}
}

Controller :

List<Comment> comments = new ArrayList<>();
comments.add(new Comment("hello", new Comment("nooooo")));
comments.add(new Comment("it's another comment", new Comment("again", new Comment("yeah!"))));
comments.add(new Comment("whoopity doo"));
model.put("comments", comments);

您可以输出带有如下片段的嵌套注释链:

<th:block th:each="comment: ${comments}">
<div th:replace="template :: comments(${comment})" />
</th:block>

<th:block th:if="${false}">
<ul th:fragment="comments(comment)">
<li>
<div th:text="${comment.text}" />

<th:block th:unless="${#lists.isEmpty(comment.children)}" th:each="child: ${comment.children}">
<div th:replace="template :: comments(${child})" />
</th:block>
</li>
</ul>
</th:block>

关于java - 如何在thymeleaf中动态创建多个嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359485/

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