You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/12/17 23:24:08 UTC
svn commit: r1423194 - in
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets:
FaceletCompositionContext.java impl/DefaultFacelet.java
impl/FaceletCompositionContextImpl.java
Author: lu4242
Date: Mon Dec 17 22:24:07 2012
New Revision: 1423194
URL: http://svn.apache.org/viewvc?rev=1423194&view=rev
Log:
MYFACES-3665 f:metadata section removed when refresh view and is not included in the template directly
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletCompositionContext.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/DefaultFacelet.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletCompositionContext.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletCompositionContext.java?rev=1423194&r1=1423193&r2=1423194&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletCompositionContext.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletCompositionContext.java Mon Dec 17 22:24:07 2012
@@ -336,6 +336,10 @@ abstract public class FaceletComposition
* UIComponent to finalize
*/
public abstract void finalizeForDeletion(UIComponent component);
+
+ public void removeComponentForDeletion(UIComponent component)
+ {
+ }
/**
* Add a method expression as targeted for the provided composite component
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/DefaultFacelet.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/DefaultFacelet.java?rev=1423194&r1=1423193&r2=1423194&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/DefaultFacelet.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/DefaultFacelet.java Mon Dec 17 22:24:07 2012
@@ -40,6 +40,7 @@ import javax.el.ExpressionFactory;
import javax.faces.FacesException;
import javax.faces.application.Resource;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
import javax.faces.component.UniqueIdVendor;
import javax.faces.context.FacesContext;
import javax.faces.view.facelets.FaceletContext;
@@ -177,6 +178,19 @@ final class DefaultFacelet extends Abstr
this.refresh(parent);
myFaceletContext.markForDeletion(parent);
_root.apply(ctx, parent);
+ if (faceletCompositionContextInitialized &&
+ parent instanceof UIViewRoot)
+ {
+ UIComponent metadataFacet = parent.getFacet(UIViewRoot.METADATA_FACET_NAME);
+ if (metadataFacet != null)
+ {
+ // Ensure metadata facet is removed from deletion, so if by some reason
+ // is not refreshed, its content will not be removed from the component tree.
+ // This behavior is preferred, even if the spec suggest to include it using
+ // a trick with the template client.
+ myFaceletContext.removeComponentForDeletion(metadataFacet);
+ }
+ }
myFaceletContext.finalizeForDeletion(parent);
this.markApplied(parent);
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java?rev=1423194&r1=1423193&r2=1423194&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java Mon Dec 17 22:24:07 2012
@@ -820,6 +820,32 @@ public class FaceletCompositionContextIm
}
}
+ @Override
+ public void removeComponentForDeletion(UIComponent component)
+ {
+ String id = (String) component.getAttributes().get(ComponentSupport.MARK_CREATED);
+ if (id != null)
+ {
+ removeComponentForDeletion(id);
+ }
+ else if (id == null
+ && Boolean.TRUE.equals(component.getAttributes().get(ComponentSupport.FACET_CREATED_UIPANEL_MARKER)))
+ {
+ if (component.getChildCount() > 0)
+ {
+ for (int i = 0, size = component.getChildCount(); i < size; i++)
+ {
+ UIComponent child = component.getChildren().get(i);
+ id = (String) child.getAttributes().get(ComponentSupport.MARK_CREATED);
+ if (id != null)
+ {
+ removeComponentForDeletion(id);
+ }
+ }
+ }
+ }
+ }
+
public void finalizeForDeletion(UIComponent component)
{
String id = (String) component.getAttributes().get(ComponentSupport.MARK_CREATED);