Author: ccordenier Date: Mon Sep 6 06:54:14 2010 New Revision: 992952 URL: http://svn.apache.org/viewvc?rev=992952&view=rev Log: Apply TAP5-1100 to 5.1.0.8 (see TAP5-733)
Modified: tapestry/tapestry5/branches/5.1.0.x-dev/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java Modified: tapestry/tapestry5/branches/5.1.0.x-dev/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.1.0.x-dev/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java?rev=992952&r1=992951&r2=992952&view=diff ============================================================================== --- tapestry/tapestry5/branches/5.1.0.x-dev/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java (original) +++ tapestry/tapestry5/branches/5.1.0.x-dev/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java Mon Sep 6 06:54:14 2010 @@ -567,6 +567,9 @@ public class ComponentPageElementImpl ex private void initializeRenderPhases() { + if (renderPhasesInitalized) + return; + setupRenderPhase = new SetupRenderPhase(); beginRenderPhase = new BeginRenderPhase(); beforeRenderTemplatePhase = new BeforeRenderTemplatePhase(); @@ -799,6 +802,11 @@ public class ComponentPageElementImpl ex public void enqueueBeforeRenderBody(RenderQueue queue) { + // TAP5-1100: In certain Ajax cases, a component may be asked to render its body + // that has never rendered itself (and thus, never called initializeRenderPhases). Subtle. + + initializeRenderPhases(); + // If no body, then no beforeRenderBody or afterRenderBody if (bodyBlock != null) @@ -976,8 +984,7 @@ public class ComponentPageElementImpl ex // We assume that by the time we start to render, the structure (i.e., mixins) is nailed down. // We could add a lock, but that seems wasteful. - if (!renderPhasesInitalized) - initializeRenderPhases(); + initializeRenderPhases(); // TODO: An error if the render flag is already set (recursive rendering not // allowed or advisable).