2011-09-19 100 views
1

我在數據庫中有一個類似樹的結構樹。從SQL到HTML的樹狀結構UL

我有一個查詢,返回我的記錄排序只是我希望他們顯示的方式。

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中,我有一個具備所有這些參數(ID,姓名,PARENT_ID,水平)分支機構對象。

我想要做的JSP的輸出,最終會看起來像這樣:使用http://bassistance.de/jquery-plugins/jquery-plugin-treeview/

任何建議

<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 /李以顯示數據怎麼做?

+0

多大的樹,你說,在節點和平均深度方面? –

+0

看看這個:http://stackoverflow.com/questions/1356401/generic-tree-implementation-in-java – cuh

回答

1
  • 定義一個名爲children的Node數據結構。
  • 製作一個Map<Integer,Node>,您可以在其中按id查找數據結構。
  • 迭代您的SQL ResulSet,查找或爲每條記錄創建父節點,並將子節點添加到父級。
  • 獲取根級節點並使用遞歸將其輸出到String。

粗糙的代碼示例:

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>"); 
    } 
} 
+0

謝謝,我會看看它。但是,追加HTML並不是我想要的解決方案,我想用c:forEach來遍歷JSP中的元素。 – eagerMoose