近来工作,要求自己搭建框架。从中遇到了这样一个诉求---动态菜单。
这个诉求在Java Web框架设计中属于最普遍的需求。那么我们来探讨下。
一般的Java Web框架的菜单层级都是为二级,那么在数据库设计时,就需要定义其父子关系。
如:
数据库设计此时已经成为了层级关系,但是如何让我们的Java代码输出呈现出层级关系呢?
此时就需要实体类。实体类中包含自己的集合
public class TreeObject implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private Integer pid;
private String parentName;
private String type;
private String svalue;
private String name;
private String remark;
private String icon;
private String englishName;
private Integer sort;
private List<TreeObject> children = new ArrayList<TreeObject>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSvalue() {
return svalue;
}
public void setSvalue(String svalue) {
this.svalue = svalue;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getEnglishName() {
return englishName;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public List<TreeObject> getChildren() {
return children;
}
public void setChildren(List<TreeObject> children) {
this.children = children;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
那么就可以实现集合中包含集合。为了实现了这一点,我们需要借助算法---递归
这里不在叙述。。。。递归
-----------------------------------
这里提示一点:目前发现在使用Bootstrap前端框架在异步调用菜单发现第二级样式没有加载出来。所以采用同步。这里请求大神支持