我需要实现评论树,但无法获得回复以回复工作。
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
基本上没有显示对答复的答复。
我该如何获得我想要的输出?
答案 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>