2012-11-04 19 views
0

我有一個項目使用JSF primefaces和EJB管理的帶有休眠存儲的Beans。 http://www.primefaces.org/showcase/ui/treeAjax.jsf按需生成primefaces ajax樹?

問題:我一直得到內存不足或堆棧溢出錯誤,你能看到我的遞歸問題嗎?

@ManagedBean(name = "categoryController") 
@RequestScoped 
public class CategoryController implements Serializable { 
    ... 

    @EJB 
    private CategoryFacade ejbFacade; 
    private TreeNode root; 

    public TreeNode getRoot() { 
     return root; 
    } 

    @PostConstruct 
    public void init() { 
     root = new DefaultTreeNode("Root", null); 
     System.out.print("Facade value=" + getFacade()); 
     Category categoryRoot = getFacade().find(new Integer(1)); 
     getSubcategories(categoryRoot, root); 

    } 

    private void getSubcategories(Category categoryRoot, TreeNode root) { 
     List<Category> list = getFacade().findByNamedQuery("Category.findByPCatid", "pcatid", categoryRoot); 
     Iterator<Category> it = list.iterator(); 
     while (it.hasNext()) { 
      Category subcategory = it.next(); 
      TreeNode nextNode = new DefaultTreeNode(subcategory.getUcatid(), root); 
      getSubcategories(subcategory, nextNode); 

     } 

    } 

    ... 
} 
+0

您正在陷入無限循環。你確定所有*子類別都沒有曾經是子類別(盛大)父親的(盛大)子女嗎?如果發生這種情況,你會得到一個無限循環。 – RinaldoPJr

+0

有一個根節點的情況,解決了無限循環;謝謝。 – deefactorial

+0

@RinaldoPJr你應該在答案中發表評論,以便OP可以接受它。 –

回答