评论树,做出回复以显示回复

时间:2019-10-17 18:16:04

标签: java spring spring-boot thymeleaf

我需要实现评论树,但无法获得回复以回复工作。

Comment.java

...
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String content;

    @ManyToOne
    private Post post;

    @ManyToOne
    private Comment parent;

    @OneToMany(mappedBy = "parent")
    private List<Comment> children = new ArrayList<Comment>();
...

PostController.java

model.addAttribute("comments", commentRepository.findAllCommentsByPostIdAndParentIsNull(id));

post.html

<th:block th:each="comment : ${comments}">
<p th:text="${comment.content}">comment</p>

<th:block th:each="child : ${comment.children}">
<div class="child">
  <p th:text="${child.content}">comment</p>
</div>
</th:block>
</th:block>

评论数据库

ID | CONTENT | PARENT_ID | POST_ID
1    text1         null        1
2    text2          1          1
3    text3          2          1
4    text4         null        1

我想要的输出

text1
  text2
    text3
text4

我得到的输出

text1
 text2
text4

基本上没有显示对答复的答复。

我该如何获得我想要的输出?

1 个答案:

答案 0 :(得分:0)

尝试以下方法

<th:block th:each="comment : ${comments}">
  <p th:text="${comment.content}">comment</p>
  <div th:fragment="f_call(comment)" 
      th:unless="${#lists.isEmpty(comment.children)}" >
      <div th:each="child : ${comment.children}" th:inline="text">
          [[${child.content}]]
          <div th:replace="this::f_call(${child})"></div>
      </div>
  </div>
</th:block>