1,先创建关于tree的属性bean
public class TreeNode {
private String id;
private String text;
private String url;
private String state;//value closed,open
private boolean checked; //
private String parentId;
private String iconCls; //图标
private Map attributes = new HashMap();
private List children;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getParentId() {
return parentId;
}
public void setParentId( String parentId) {
this.parentId = parentId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public Map getAttributes() {
return attributes;
}
public void setAttributes(Map attributes) {
this.attributes = attributes;
}
/**
* @return the iconCls
*/
public String getIconCls() {
return iconCls;
}
/**
* @param iconCls the iconCls to set
*/
public void setIconCls(String iconCls) {
this.iconCls = iconCls;
}
}
2,然后创建一个tree的工具类
public class TreeUtil {
/**
* 菜单封装tree格式
* @param sysMenus
* @param string
* @return
*/
public static List MenuToNode(List sysMenus,String string) { //先封装父节点
List newTrees = new ArrayList();
TreeNode tn = null;
if(sysMenus.size()!=0){
for(int i = 0;i<sysMenus.size();i++){
if(StringUtils.isEmpty(sysMenus.get(i).getParent_menu_id())){ //父节点
tn = new TreeNode();
tn.setId(sysMenus.get(i).getId());
tn.setText(sysMenus.get(i).getMenu_name());
tn.setChildren(getChildren(sysMenus,sysMenus.get(i).getId())); //子节点数据
newTrees.add(tn);
}
}
}
return newTrees;
}
/**
* 无限递归菜单tree
* @param sysMenus
* @param id
* @return
*/
private static List getChildren(List sysMenus, String id) { //无限递归封装子节点
List newTrees = new ArrayList();
TreeNode tn = null;
for(int i = 0;i<sysMenus.size();i++){
if(!StringUtils.isEmpty(sysMenus.get(i).getParent_menu_id())){
if(id.equals(sysMenus.get(i).getParent_menu_id())){
tn = new TreeNode();
//tn.setIconCls("icon-edit");
tn.setId(sysMenus.get(i).getId());
tn.setText(sysMenus.get(i).getMenu_name());
tn.setUrl(sysMenus.get(i).getMenu_url());
tn.setChildren(getChildren(sysMenus,sysMenus.get(i).getId()));
newTrees.add(tn);
}
}
}
return newTrees;
}
}
3,关于SysMenu对象则是需要变成tree的原数据集合,数据库表则是按照tree级通用方式来创建的单表;
MenuToNode(List sysMenus,String string)方法d中的string参数暂时无用;
tree数据格式封装处理
最新推荐文章于 2024-08-30 07:21:10 发布