代码之家  ›  专栏  ›  技术社区  ›  Shadowman

JSF/Seam-嵌套/递归迭代

  •  0
  • Shadowman  · 技术社区  · 14 年前

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

    public class MyObject {
    
    ...
    
    public List<Comment> getComments();
    
    ...
    }
    

    我的评论如下:

    public class Comment {
    
    ...
    
    public Comment getParent();
    
    ...
    
    public List<Comment> getChildComments();
    
    ...
    }
    

    我已经使用JPA设置了所有的实体,它们被填充到数据库中。但是,我的dilema是,如何迭代每个注释,以便可以在线显示其子注释?我知道我可以用 <ui:repeat value="#{myObj}" var="comment" /> 循环访问对象的根级别注释。但是,我应该如何迭代每个孩子的评论呢?然后,我该如何迭代 他们的 子注释。等等,等等。

    有人做过这样的事吗?我想“嵌套迭代”实际上可以更多地被看作是“递归迭代”。思想?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Bozho    14 年前

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

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