JSF / Seam - 嵌套/递归迭代

时间:2010-06-30 18:14:53

标签: jsf seam facelets

我有一种情况,我想在一系列选项上执行嵌套迭代,并使用JSF显示结果。举个例子,想一个讨论板。每条评论可能包含父评论和0-n儿童评论。所以,我的根对象是这样的:

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 个答案:

答案 0 :(得分: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中某些Tree结构中的数据,并在简单的迭代中将其用于可视化。您可能需要具有放在树中的对象的“级别”属性。