关于递归调用,实现树形菜单的样式

简介: 一:需求   现有以需求就是把某一个帖子的全部评论展示出来。 二:分析   关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论。 三:思路   先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论。

一:需求

  现有以需求就是把某一个帖子的全部评论展示出来。

二:分析

  关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论。

三:思路

  先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论。

四:编码

  实体类:

 1 import java.util.Date;
 2 import java.util.List;
 3 
 4 import com.fasterxml.jackson.annotation.JsonFormat;
 5 
 6 import lombok.Data;
 7 @Data
 8 public class BsChannelPostReply {
 9     private long replyId;
10     private String niceName;
11     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 
12     private Date replyDate;
13     private String content;
14     private long directRepliedId;//回复的直接评论的replyId
15     private List<BsChannelPostReply> children;//下面的子评论
16 }

  

  获取主评论列表,和递归全部子评论:

 1 @Override
 2     @Datasource(value="community")//切换数据源
 3     public List<BsChannelPostReply> getMainReply(int postId) {
 4         // TODO Auto-generated method stub
 5         List<BsChannelPostReply> listMain=dao.getMainReply(postId);//获取主评论
 6         if(listMain.size()>=0){//如果主评论不为空
 7             for (BsChannelPostReply bsChannelPostReply : listMain) {
 8                 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//加载子评论
 9             }
10         }
11         return listMain;
12     }
13 
14     @Override
15     @Datasource(value="community")//切换数据源
16     public List<BsChannelPostReply> getMainReplyChildren(long replyId) {
17         // TODO Auto-generated method stub
18         List<BsChannelPostReply> listChildren=dao.getMainReplyChildren(replyId);//根据当前的replayId获取当前级子评论列表
19             if(listChildren.size()>=0){
20             for (BsChannelPostReply bsChannelPostReply : listChildren) {
21                 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//在判断当前子评论是否还有子评论,递归调用,直到没有子评论
22             }
23         }
24         return listChildren;
25     }

 

五:效果

  根据这样的递归调用就可以实现理论上的获取无极限的子评论列表。

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
4月前
EasyUI datagrid 从左至右递归合并表格
EasyUI datagrid 从左至右递归合并表格
34 2
|
10月前
|
JavaScript
原生js树形菜单
原生js树形菜单
42 0
|
前端开发
通过HTML+CSS实现折叠样式完整代码
通过HTML+CSS实现折叠样式完整代码
119 0
|
4月前
|
JSON JavaScript 前端开发
js(递归函数)实现树型菜单
js(递归函数)实现树型菜单
47 0
|
11月前
13zTree - 展开 / 折叠父节点控制
13zTree - 展开 / 折叠父节点控制
42 0
13zTree - 展开 / 折叠父节点控制
|
10月前
|
JSON JavaScript 前端开发
JS实现树形菜单递归函数(折叠菜单)
JS实现树形菜单递归函数(折叠菜单)
50 0
|
10月前
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
|
11月前
|
存储 数据格式
55EasyUI 树形菜单- 树形菜单加载父/子节点
55EasyUI 树形菜单- 树形菜单加载父/子节点
27 0
|
11月前
60EasyUI 树形菜单- 树形网格惰性加载节点
60EasyUI 树形菜单- 树形网格惰性加载节点
30 0