表结构是: classID,className,parentId ,depth,allChildId , ................ public StringgetSelectTree(StringclassID) ... {Stackstack=newStack();StringBuffertree=newStringBuffer("");Listlist=this.siteClassDao.queryRootClass();//得到根if(list!=null&&list.size()!=0)...{for(inti=0;i<list.size();i++)...{stack.push(((TCmsSiteClass)list.get(i)).getClassID());}}TCmsSiteClasspo=null;String[]children=null;TCmsSiteClassparent=null;intdep=0;Stringspace=" ";StringBufferperSpace=newStringBuffer("");while(!stack.isEmpty())...{parent=null;po=this.siteClassDao.querySiteClass((String)stack.pop());if(po.getParentId().length()==32)...{parent=this.siteClassDao.querySiteClass(po.getParentId());}else...{dep=0;perSpace.delete(0,perSpace.length());}if(po.getDepth().intValue()>dep)...{dep++;perSpace.append(space);}elseif(po.getDepth().intValue()<=dep)...{perSpace.delete(perSpace.length()-(space.length()*(dep-po.getDepth().intValue())),perSpace.length());if(perSpace.length()>1&&perSpace.charAt(perSpace.length()-1)!=';')...{perSpace.deleteCharAt(perSpace.length()-1);}dep=po.getDepth().intValue();}tree.append("<option");if(po.getClassID().equals(classID))...{tree.append("selected");}tree.append("value='");tree.append(po.getClassID());tree.append("'>");//判断此节点是不是所有兄弟节点里面的最后一个if(parent!=null)...{inti;String[]brotherIDs=StrUtils.split(parent.getAllChildId(),'#');for(i=0;i<brotherIDs.length-1;i++)...{if(po.getClassID().equals(brotherIDs[i]))...{break;}}if(i==0)...{//是所有兄弟节点里面的最后一个tree.append(perSpace);tree.append("└ ");}else...{tree.append(perSpace);tree.append("├ ");//不是所有兄弟节点里面的最后一个perSpace.append("│");}}tree.append(po.getClassName());tree.append("</option> ");//把所有孩子的ID加到堆栈里面去if(po.getAllChildId()!=null)...{children=StrUtils.split(po.getAllChildId(),'#');for(inti=0;i<children.length-1;i++)...{stack.push(children[i]);}}}returntree.toString();}