Jsf 2 自定义组件';的父项为空

Jsf 2 自定义组件';的父项为空,jsf-2,facelets,parent,custom-component,Jsf 2,Facelets,Parent,Custom Component,我创建了一个自定义面板组件XXPanelGroup,它扩展了HtmlPanelGroup,只是为了将XXComponentHandler添加到标记中。标记放置在复合构件内。在这个自定义面板组件中,我有另一个自定义标记,它有自己的YYComponentHandler。在此处理程序中,我需要父组件的完整路径,即我的XXPanelGroup 但是,出乎意料的是,父组件是null。当我尝试显式调用setParent()时,出现以下异常: Parent was not null, but this com

我创建了一个自定义面板组件
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)
    ...

这是如何导致的,我如何解决它?

使用以下方法在组件树中插入组件:

public class SomeHandler extends ComponentHandler {
    ...

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