2010-06-30 111 views
0

我有一種情況,我想對一系列選項執行嵌套迭代並使用JSF顯示結果。作爲一個例子,想一想討論板。每個評論可能包含一個家長評論和0-n個孩子評論。所以,我的根對象會是這樣的:JSF/Seam - 嵌套/遞歸迭代

public class MyObject { 

... 

public List<Comment> getComments(); 

... 
} 

而且我的意見是這樣的:

public class Comment { 

... 

public Comment getParent(); 

... 

public List<Comment> getChildComments(); 

... 
} 

我已經得到了所有使用JPA我的實體設置的,並且它們中的填充數據庫。但是,我的困境是,我如何遍歷每條評論,以便我可以在內部顯示其子註釋?我知道我可以使用<ui:repeat value="#{myObj}" var="comment" />來迭代對象的根級別註釋。但是,我如何重複每個孩子的評論?然後,我如何迭代他們的子註釋。等等等等。

有沒有人做過類似的事情?我認爲「嵌套迭代」實際上可以被認爲更像是「遞歸迭代」。思考?

回答

1

對於固定大小的嵌套迭代,只需使用:

<ui:repeat value="#{myObj}" var="comment"> 
    <ui:repeat value="#{comment}" var="subComment"> 
     <ui:repeat value="#{subComment}" var="subSubComment"> 
     </ui:repeat> 
    </ui:repeat> 
</ui:repeat> 

如果你想完全遞歸,在你的bean一些樹結構獲取數據,使用任何你喜歡的循環,並使用它只是用於可視化,在一個簡單的迭代。您可能需要在樹中放置對象的「級別」屬性。