jquery 树型(Tree)目录(一)

来源:互联网 发布:淘宝不能交保证金 编辑:程序博客网 时间:2024/05/10 07:21

第一步:从数据库中取得数据,并封装为map集合,如下代码:

@Controller
@Results(
value={@Result(name = "success", type = "chain", location = "channel"),
                            @Result(name="channelJson",type="json")})
public class ChannelTreeAction extends PersistAction{
       private static final long serialVersionUID = 1L;
 
       @Autowired
       ChannelService channelService;  //要取数据库中数据的service
 
       private List channelList = new ArrayList();   //数据集合
       //总数据map集合
       private Map allChannel = new HashMap();
       //树节点map集合
       private Map> rootTree = new HashMap>();

       /**

        *此方法用于json封装

       */
       public String channeTree(){
               channelList = channelService.findAll();   //从数据库中取出所有数据,并放到集合中
               Collections.sort(channelList) ;   //对集合进行排序
  
               List li = new ArrayList(); //声明一个临时集合,用于存放“根节点”
               for(Channel ch:channelList){     //对集合进行迭代
                        allChannel.put(ch.getChannelId()+"", ch);    //将数据以自己id做key,以对象本身做value,放到map集合中
                        if(ch.getChannelId()==1){    //产生根节点,此处重要,用你已知条件产生,此处我用对象的id=1产生
                                     li.add(ch);
                        }
                }
                for(Channel rootChannel:li){   //迭代临时存放"根节点"的集合
                        decreaseTree(rootChannel.getChannelId()+"");   //调用“递归树”方法
                }
                return "channelJson";
         }
         //递归树
         private void decreaseTree(String channelID){
                 List  frequencyLsit = new ArrayList();//临时创建的存放次级目录的集合
                 for(Channel ch:channelList){   //迭代数据集合,取出符合条件的下一级目录
                          if(channelID.equals(ch.getParent().getChannelId()+"") && ch.getChannelId()!=1){  //下一级目录的控制条件
                                      frequencyLsit.add(ch);    //添加到“临时存放次级目录集合”中
                          }
                  }
                  if(!frequencyLsit.isEmpty()){    //如果“次级目录集合”不为空,则执行
                           rootTree.put(channelID,frequencyLsit);//以父节点的id作为key,以子节点的集合作为value放到“树节点map集合”中
                           for(Channel fq:frequencyLsit){  //迭代“次级目录集合”
                                       decreaseTree(fq.getChannelId()+""); //调用自己方法完成递归
                           }
                   }
           }
           public List getChannelList() {
                    return channelList;
           }
           public void setChannelList(List channelList) {
                    this.channelList = channelList;
           }
           public Map getAllChannel() {
                    return allChannel;
            }
            public void setAllChannel(Map allChannel) {
                    this.allChannel = allChannel;
            }
            public Map> getRootTree() {
                    return rootTree;
            }
            public void setRootTree(Map> rootTree) {
                    this.rootTree = rootTree;
             }
             public void setChannelService(ChannelService channelService) {
                    this.channelService = channelService;
             } 
}

**************************************************************************************************************

原创粉丝点击