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);
}
}