Revision: 1283
          http://stripes.svn.sourceforge.net/stripes/?rev=1283&view=rev
Author:   bengunter
Date:     2010-09-27 15:34:08 +0000 (Mon, 27 Sep 2010)

Log Message:
-----------
Fixed STS-763: Components Nested Inside Other Components Do NOT Render. When 
render tags are nested within definition tags in multiple layers, all the 
component renderers registered in previous contexts need to be present in the 
page scope for the current context.

Modified Paths:
--------------
    
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java

Modified: 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java
===================================================================
--- 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java
      2010-09-25 02:01:10 UTC (rev 1282)
+++ 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java
      2010-09-27 15:34:08 UTC (rev 1283)
@@ -14,6 +14,7 @@
  */
 package net.sourceforge.stripes.tag.layout;
 
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -75,9 +76,14 @@
         for (Map.Entry<String, Object> entry : 
context.getParameters().entrySet()) {
             pageContext.setAttribute(entry.getKey(), entry.getValue());
         }
-        for (Entry<String, LayoutComponentRenderer> entry : 
context.getComponents().entrySet()) {
-            entry.getValue().pushPageContext(pageContext);
-            pageContext.setAttribute(entry.getKey(), entry.getValue());
+
+        // Put component renders into the page context, even those from 
previous contexts
+        Iterator<LayoutContext> iter = LayoutContext.getStack(pageContext, 
false).iterator();
+        while (iter.hasNext()) {
+            for (Entry<String, LayoutComponentRenderer> entry : 
iter.next().getComponents().entrySet()) {
+                entry.getValue().pushPageContext(pageContext);
+                pageContext.setAttribute(entry.getKey(), entry.getValue());
+            }
         }
 
         // Enable output only if this is the definition execution, not a 
component render
@@ -95,9 +101,12 @@
         try {
             LayoutContext context = getContext();
             if (!renderPhase) {
-                // Pop our page context off the renderer's page context stack
-                for (LayoutComponentRenderer renderer : 
context.getComponents().values()) {
-                    renderer.popPageContext();
+                // Pop our page context off the renderers' page context stack
+                Iterator<LayoutContext> iter = 
LayoutContext.getStack(pageContext, false).iterator();
+                while (iter.hasNext()) {
+                    for (LayoutComponentRenderer renderer : 
iter.next().getComponents().values()) {
+                        renderer.popPageContext();
+                    }
                 }
             }
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to