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