我创建了一个扩展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 :(得分:0)
使用以下命令在组件树中插入组件:
public class SomeHandler extends ComponentHandler {
...
@Override
public void onComponentCreated(FaceletContext context, UIComponent component, UIComponent parent) {
parent.getChildren().add(component);
}
}