怎么用java代码实现上面这样的目录树?
首先创建数据表
每条数据记录自己的id以及父节点的id
然后进入java代码部分:
public String directory(String author)
{
StringBuffer treeHtml = new StringBuffer();
// 得到所有的目录词(包含全部字段)
List<Tutorial> words = bdExpandService.getAllWords(author);
for (int i = 0; i < words.size(); i++)
{
Tutorial wordMap = words.get(i);
// System.out.println(wordMap);
if (wordMap.getPid() == 0)
{
treeHtml.append("<dl>");
// 得到根目录的id,根据这个id找到这个的所有子目录
appendTree(words, wordMap, treeHtml);
treeHtml.append("</dl>");
}
}
words.clear();
return treeHtml.toString();
} /**
*
* 构造目录树 <功能详细描述>
*
* @param tutorials
* @param tutorial
* @param treeHtml
* @see [类、类#方法、类#成员]
*/
private void appendTree(List<Tutorial> words, Tutorial wordMap, StringBuffer treeHtml)
{
int tid = wordMap.getTid();
// 得到根目录的id,根据这个id找到这个的所有子目录
Map<String, Object> map = childTreeHtml(words, tid);
String nodeHtml = map.get("treeHtml").toString();
boolean hasChild = Boolean.valueOf(map.get("hasChild").toString());
if (hasChild)
{
treeHtml.append("<dt class='node-close' onclick='showTree(").append(tid).append(")'");
treeHtml.append("id='tree_dt").append(tid).append("'>");
treeHtml.append(wordMap.getKeyWord()).append("</dt>");
treeHtml.append(nodeHtml);
} else
{
treeHtml.append("<dt>");
treeHtml.append(wordMap.getKeyWord()).append("</dt>");
}
} /**
*
* 得到子目录,构造目录树 <功能详细描述>
*
* @param tutorials
* @param tid
* @return
* @see [类、类#方法、类#成员]
*/
private Map<String, Object> childTreeHtml(List<Tutorial> words, int tid)
{
Map<String, Object> map = new HashMap<String, Object>();
StringBuffer treeHtml = new StringBuffer();
boolean hasChild = false;
for (int i = 0; i < words.size(); i++)
{
Tutorial wordMap = words.get(i);
int pid = wordMap.getPid();
if (pid == tid)
{
hasChild = true;
treeHtml.append("<dd name='tree_dd").append(pid).append("'");
treeHtml.append("style='display: none;'>").append("<dl>");
appendTree(words, wordMap, treeHtml);
treeHtml.append("</dl></dd>");
}
}
map.put("treeHtml", treeHtml);
map.put("hasChild", hasChild);
return map;
}
JavaScript方法:
function showTree(tid)
{
var dds = $("dd[name='tree_dd" + tid + "']");
var dtClass = $("#tree_dt" + tid).attr("class");
if(dtClass == "node-close"){
$("#tree_dt" + tid).attr("class", "node-open");
$("dd[name='tree_dd" + tid + "']").each(function(){
$(this).show();
});
}else{
$("#tree_dt" + tid).attr("class", "node-close");
$("dd[name='tree_dd" + tid + "']").each(function(){
$(this).hide();
});
}
}
directory()方法返回的字符串就是整个目录树,然后将这个字符串传到前台页面显示,加上css样式就可以了
用java代码实现构造目录树的更多相关文章
-
Java身份证归属地目录树
数据库结构: web管理界面: 目录树: 视频: 应用场景:
-
[改善Java代码]使用构造块精炼程序
建议36: 使用构造代码块精炼程序 什么叫代码块(Code Block)?用大括号把多行代码封装在一起,形成一个独立的数据体,实现特定算法的代码集合即为代码块,一般来说代码块是不能单独运行的,必须要有 ...
-
用Java代码列出一个目录下所有的文件
1.File类 File类在java.io.File包中,所以要导入这个包. File类中用到的方法: boolean isDirectory() 测试此抽象路径名表示的文件是否是个目录 ...
-
如何用Java代码列出一个目录下所有的文件?
目录文件夹 File file=new File("H:\\"); for(File temp:file.listFiles()){//Java5的新特性之一就是增强的for循环. ...
-
java File类 打印目录树状结构(递归)
import java.io.File; /** * 递归遍历 * */ public class FieTree { public static void main(String[] args) { ...
-
java代码实现目录结构
今天用java代码来实现.像我们电脑盘符那样的目录结构.在代码开始之前首先.介绍一下.用.java代码实现目录的思想. 第一步:完成基础的.大家想.我们是如何获取文件的.是不是用File类,直接就获取 ...
-
Java代码操作HDFS(在/user/root/下面創建目錄)
1.创建HDFS目录并打成jar包 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.h ...
-
Java生成菜单树(目录树)的几种方式
本文介绍两种不同生成多级目录树的方式:1. 递归生成,2. map+list 集合生成.最下方会附上完整代码. 生成树的基本规则:子节点的par_id等于父节点的id. 1. 实体类 import ...
-
java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
随机推荐
-
vim的高亮查找操作
使用了VIM这么久,却一直无法牢记一些基本的操作指令.今天查找一个关键字时,想不起来怎么查找“下一个”,于是google之并解决,顺便把有用的都贴过来罢. 查找指令:/xxx 往下查找?xxx 往上 ...
-
linux dsp 播放音频文件
#include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/ioc ...
-
jquery 导航固定的一个实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
-
【转】ArrayList和LinkedList的几种循环遍历方式及性能对比分析
原文网址:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种 ...
-
angular : direative : scope | 指令scope和transclude的关系
今天记入的是指令的scope和transclude关系 a 和 b 都是指令 <div a> <div b></div> </div> a transc ...
-
不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
-
django 应用中获取访问者ip地址
通常访问者的IP就在其中,所以我们可以用下列方法获取用户的真实IP: #X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载 ...
-
PHP中文件类型 文件属性 路径以及 文件相关的函数
一: 文件类型判断: 1.is_dir() 判断是不是目录 2.is_file() 判断是不是文件 3.is_executable() 判断是不是可执行文件 4.is_readable() 判断是 ...
-
kolla部署all-in-one环境(N版)
简单介绍: Kolla 是 OpenStack 大帐篷模式下的官方子项目之一,其主要目标是通过利用 Docker 容器以及 Ansible 自动化部署工具,来为 OpenStack 云平台提 供一个简 ...
-
Django配置让其他电脑访问网站(包括:修改IP和端口)
http://blog.sina.com.cn/s/blog_9c5364110101fyk7.html