废话不多说 ,实现一个树型结构体首先得需要一个对象来装载需要的结构数据;
private Integer id;
private String name;
private boolean checked;
private List<TreeNode> children;
private boolean disabled;
private String icon;
private boolean open;
private Integer pId;
再把我映射数据库对象得菜单结构体粘贴出来
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "menu_id", unique = true, nullable = false)
private Integer menuId;
@Column(name = "pid", length = 11)
private Integer pid;
@Column(name = "menu_name", length = 30)
private String menuName;
@Column(name = "menu_url", length = 50)
private String menuUrl;
@Column(name = "menu_type", length = 1)
private Integer menuType;
@Column(name = "admin_id", length = 11)
private Integer adminId;
@Column(name = "icon", length = 100)
private String icon;
@Column(name = "tips", length = 100)
private String tips;
@Column(name = "order_show", length = 8)
private Integer order;
实现方法
List<TreeNode> resultSet = null;
if (menuAllList != null && menuAllList.size() > 0) {
resultSet = new ArrayList<TreeNode>();
TreeNode node = null;
for (Menu obj : menuAllList) {
node = new TreeNode();
if (obj.getPid() == 0){
node.setIcon("../../../static/img/parent_menu.png");
}
if (obj.getPid() == 0 || !(obj.getPid() > 0)) {
node.setId(obj.getMenuId());
node.setName(obj.getMenuName());
node.setChildren(getChildNode(menuAllList, obj.getMenuId(), _list));
node.setChecked(false);
node.setpId(obj.getPid());
node.setDisabled(false);
resultSet.add(node);
}
}
}
private List<TreeNode> getChildNode(List<Menu> list, Integer parentId, List<Integer> _list) {
List<TreeNode> tem = new ArrayList<TreeNode>();
TreeNode node = null;
for (Menu obj : list) {
if (obj.getPid() != 0 && obj.getPid() > 0) {
if (obj.getPid() == parentId) {
node = new TreeNode();
node.setId(obj.getMenuId());
node.setName(obj.getMenuName());
node.setChildren(getChildNode(list, obj.getMenuId(), _list));
node.setChecked(false);
node.setIcon("../../../static/img/child_menu.png");
if (_list != null && _list.size() > 0) {
if (_list.contains(obj.getMenuId())) {
node.setChecked(true);
node.setOpen(true);
}
}
node.setDisabled(false);
tem.add(node);
}
}
}
if (tem.size() > 0) {
return tem;
}
return null;
}
这个代码片段是前端实现得