2011-12-07 31 views
1

我創建了自定義面板組件XXPanelGroup,它擴展了HtmlPanelGroup,只是將XXComponentHandler添加到標記。標籤放置在複合組件內。在這個自定義面板組件中,我有另一個自定義標籤,它有自己的YYComponentHandler。在這個處理程序中,我需要父組件的完整路徑,這是我的XXPanelGroup自定義組件的父項爲空

但是,意外的是,父組件是null。當我試圖打電話setParent()明確,我得到了以下異常:

Parent was not null, but this component not related 
    at javax.faces.component.UIComponentBase.eraseParent(UIComponentBase.java:517) 
    at javax.faces.component.UIComponentBase.access$400(UIComponentBase.java:99) 
    at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2629) 
    at javax.faces.component.UIComponentBaseChildrenList.add(UIComponentBase.java:2603) 
    at com.sun.faces.facelets.tag.jsf.ComponentSupport.addComponent(ComponentSupport.java:559) 
    ... 

這是怎麼造成的,我該如何解決呢?

回答

0

使用下列插入組件樹中的組件:

public class SomeHandler extends ComponentHandler { 
    ... 

    @Override 
    public void onComponentCreated(FaceletContext context, UIComponent component, UIComponent parent) { 
     parent.getChildren().add(component); 
    } 
}