Any thought for this, thanks ! 2011/6/13 Ivan <[email protected]>
> Hi, > Per the Java doc of > http://javaserverfaces.java.net/nonav/docs/2.0/javadocs/javax/faces/component/UIComponent.html#getChildren(), > if I set an existing child in the returned children list, the target child > should be removed from its previous parent in both children and facet list. > While currently MyFaces seems only remove from the children list. And for > the facet map, now it only remove from the facet map. Is it a bug for > MyFaces ? > ---> > getChildren > > public abstract List<UIComponent> getChildren() > > Return a mutable List representing the child UIComponents associated with > this component. The returned implementation must support all of the standard > and optional List methods, plus support the following additional > requirements: > > The List implementation must implement the java.io.Serializable interface. > Any attempt to add a null must throw a NullPointerException > Any attempt to add an object that does not implement UIComponent must throw > a ClassCastException. > *Whenever a new child component is added, the parent property of the child > must be set to this component instance. If the parent property of the child > was already non-null, the child must first be removed from its previous > parent (where it may have been either a child or a facet).* > Whenever an existing child component is removed, the parent property of the > child must be set to null. > > After the child component has been added to the view, if the following > condition is not met: > > > FacesContext.isPostback() returns true and FacesContext.getCurrentPhaseId() > returns PhaseId.RESTORE_VIEW > > Application.publishEvent(javax.faces.context.FacesContext, java.lang.Class, > java.lang.Object) must be called, passing PostAddToViewEvent.class as the > first argument and the newly added component as the second argument. > > -- > Ivan > -- Ivan

