面包屑导航条如何从后台取值

隔壁王大爷 发布于 2016/11/29 21:45
阅读 1K+
收藏 0
前台页面需要实现一个面包屑的导航条,Bootstrap这个直接写确实很方便,现在要求,这个面包屑的导航条需要的位置数据要是从后台拿出来,就是这个传的值要是通用的,传值用Json,这样一个通用的东西,我应该怎么样去设计,有哪位,给指点下思路,感谢!
加载中
0
c
chentnt

最近也在做类似这个问题的东西,说一下自己的解决方案,肯定不是最优解,但是是可行的.

在后台建类目表,需要节点id,父节点id,节点名称

假设你需要从叶子节点去得到完整的路径,可先获取叶子节点数据然后递归一点一点向上获取父节点数据.

返回数据放入的类可以参考这种设计:

private class TreeNode{  
    private String id;  
    private String name;  
    private String parentId;  
    private List<TreeNode> children;  
      
    // TODO getter/setter  
}

然后在service层进行数据格式的封装:
List<TreeNode> menuList = xxManager.findAllMenu();  
  
List<TreeNode> nodeList = new ArrayList<TreeNode>();  
for(TreeNode node1 : menuList){  
    boolean mark = false;  
    for(TreeNode node2 : menuList){  
        if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){  
            mark = true;  
            if(node2.getChildren() == null)  
                node2.setChildren(new ArrayList<TreeNode>());  
            node2.getChildren().add(node1);   
            break;  
        }  
    }  
    if(!mark){  
        nodeList.add(node1);   
    }  
}  
//转为json格式        
String json = JSONArray.fromObject(nodeList).toString();
大概的封装思路如下图:

在这里抛砖引玉了,更好的成熟的解决方案肯定有,这里只是个人的一些解决方式.

隔壁王大爷
隔壁王大爷
回复 @chentnt : 嘘!你一下就猜出来了。。
c
chentnt
回复 @隔壁王大爷 : 少年你是不是数据结构翘课了^_^
隔壁王大爷
隔壁王大爷
回复 @chentnt : 那你后台数据库中表值parentid怎么存的? 我表中有 id pid name 这样 , 你那个parentid 值怎么存的。 例如 一级》二级》三级 三级的parentid 是存的1.1.1?
c
chentnt
回复 @隔壁王大爷 : 图是为了让你理解数据是怎么封装的,数据库是要有TreeNode类中前三个属性
隔壁王大爷
隔壁王大爷
后台建立的类目 也就是在数据库中建立你图中 。1.1 1.2这样的目录呗。 你的TreeNode 也就是所有节点都能用?
0
c
chentnt
给你一个例子吧
id |parent_id |name |
---|----------|--------|
1  |0         |aaa         |             
2  |0         |bbb        |
3  |0         |ccc         |
4  |1         |ddd        |
5  |2         |eee          |
6  |2         |fff            |
7  |2         |ggg         |
8  |3         |iii           |
0
水梦星光
水梦星光
树形结构  层次回归
返回顶部
顶部