我的数据库中有一个树状结构。
我有一个查询,它返回按照我希望的显示方式排序的记录。
SELECT branch_id, branch_name, parent_branch_id, level FROM dw_branches
start WITH parent_branch_id IS NULL
connect BY PRIOR branch_id = parent_branch_id
返回类似这样的内容
| branch_id | branch_name | parent_branch_id | level|
| 1 | one | | 1|
| 2 | two | 1 | 2|
| 3 | three | 1 | 2|
| 4 | four | 2 | 3|
| 5 | five | 1 | 2|
| 6 | six | 5 | 3|
在 Java 中,我有一个 Branch 对象,它具有所有这些参数(id、name、parent_id、level)。
我想在 JSP 中进行输出,最终看起来像这样:
<ul>
<li>one
<ul>
<li>two
<ul>
<li>four</li>
</ul>
</li>
<li>three</li>
<li>five
<ul>
<li>six</li>
</ul>
</li>
</ul>
</li>
</ul>
基本上,我想嵌套 ul/li 以便使用 http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ 显示数据
关于如何做到这一点有什么建议吗?
最佳答案
- 定义一个名为“children”的 Node 数据结构。
- 创建
Map<Integer,Node>
您可以在其中通过 id 查找数据结构。 - 迭代 SQL ResulSet,查找或创建每条记录的父节点,并将子节点添加到父节点。
- 获取根级节点并使用递归将其输出到字符串。
粗略代码示例:
Node {
String name;
List<Node> children = new LinkedList<Node>();
void appendHTML(StringBuilder toAppendTo) {
toAppendTo.append("<li>").append(name);
if (!children.isEmpty()) {
toAppendTo.append("<ul>");
for ( Node child : children ) {
child.appendHTML(toAppendTo);
}
toAppendTo.append("</ul>");
}
toAppendTo.append("</li>");
}
}
关于java - 从 SQL 到 HTML UL 的树状结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471996/