用java代码实现构造目录树

怎么用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 代码列出一个目录下所有的文件?
如果只要求列出当前文件夹下的文件,代码如下所示: import java.io.File; class Test12 { public static void main(String[] args) ...
- 如何用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 ...
随机推荐
- 详解python3如何调用c语言代码
本文链接:https://blog.csdn.net/u012247418/article/details/80170690开发环境linux: python3.5.2 + ubuntu-gnome- ...
- EF6中的SQL监控
在MVC或WEBAPI中的监控 System.Action<string> action = (string message) => { Debug.WriteLine(messag ...
- 微信小程序 自定义tabbar实例
在小程序的开发文档中,对tabbar是这样说明的: 如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 t ...
- python语言使用yaml 管理selenium元素
1.所有元素都在PageElement下的.yaml,如图 login_page.yaml文件: username: dec: 登录页 type: xpath value: //input[@clas ...
- 编写vscode插件
一.参考学习 https://www.cnblogs.com/liuxianan/p/vscode-plugin-publish.html https://code.visualstudio.com/ ...
- [LeetCode] 170. Two Sum III - Data structure design 两数之和之三 - 数据结构设计
Design and implement a TwoSum class. It should support the following operations:add and find. add - ...
- jmap使用
今天写的服务在处理大文件是出现Java heap space错误,因此结识了jmap jmap是JDK自带的一个工具,可以做jvm性能调优 可以生成dump文件,查询finalize执行队列.Java ...
- 关于su下bash:xxx :command not found
今天在新建组的时候出了问题: $ su Password: # groupadd prj bash: groupadd :command not found 我就纳闷,明明是在su权限下,怎么还不能使 ...
- Springboot采用hibernate-validate验证请求参数
在springboot项目使用hibernate-validate对请求参数添加注解进行校验 常用注解 @Null,标注的属性值必须为空 @NotNull,标注的属性值不能为空 @AssertTrue ...
- Word 中实现公式居中编号右对齐 -- 含视频教程(9)
1. 两种方法 不管你用「Word 自带公式」还是「Mathtype」,一般来说,Word 中实现公式居中编号右对齐的方法有两种.(1):表格法:(2):制表位. 2. 方法1:表格法 >> ...