JSF/Seam——嵌套/递归迭代

JSF/Seam——嵌套/递归迭代,jsf,seam,facelets,Jsf,Seam,Facelets,在这种情况下,我希望对一系列选项执行嵌套迭代,并使用JSF显示结果。例如,想象一个讨论板。每个注释可能包含一个父注释和0-n个子注释。我的根对象是这样的: public class MyObject { ... public List<Comment> getComments(); ... } public class Comment { ... public Comment getParent(); ... public List<Comment> ge

在这种情况下,我希望对一系列选项执行嵌套迭代,并使用JSF显示结果。例如,想象一个讨论板。每个注释可能包含一个父注释和0-n个子注释。我的根对象是这样的:

public class MyObject {

...

public List<Comment> getComments();

...
}
public class Comment {

...

public Comment getParent();

...

public List<Comment> getChildComments();

...
}
公共类MyObject{
...
公共列表getComments();
...
}
我的评论如下:

public class MyObject {

...

public List<Comment> getComments();

...
}
public class Comment {

...

public Comment getParent();

...

public List<Comment> getChildComments();

...
}
公共类注释{
...
公共评论getParent();
...
公共列表getChildComments();
...
}
我已经使用JPA设置了我的所有实体,并且它们在数据库中填充。但是,我的难题是,如何迭代每个注释,以便内联显示其子注释?我知道我可以使用
迭代对象的根级别注释。但是,我该如何迭代每个孩子的评论呢?然后,我如何迭代他们的子评论。等等,等等


有人做过这样的事吗?我认为“嵌套迭代”实际上更像是“递归迭代”。想法?

对于固定大小的嵌套迭代,只需使用:

<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中的某个树结构中获取数据,使用您喜欢的任何循环,并在一个简单的迭代中将其用于可视化。您可能需要具有放置在树中的对象的“级别”属性