Index: /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutContext.java
===================================================================
--- /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutContext.java (revision 470)
+++ /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutContext.java (working copy)
@@ -42,6 +42,15 @@
return parameters;
}
+ /**
+ * Merge another LayoutContext into this context
+ * @param context a LayoutContext to merge
+ */
+ public void merge(LayoutContext context) {
+ this.components.putAll(context.components);
+ this.parameters.putAll(context.parameters);
+ }
+
/** To String implementation the parameters, and the component names. */
public String toString() {
return "LayoutContext{" +
Index: /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java
===================================================================
--- /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java (revision 470)
+++ /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutDefinitionTag.java (working copy)
@@ -113,4 +113,8 @@
return true;
}
}
+
+ LayoutContext getContext() {
+ return this.context;
+ }
}
Index: /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutRenderTag.java
===================================================================
--- /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutRenderTag.java (revision 470)
+++ /home/philippe/workspace/stripes-svn/stripes/src/net/sourceforge/stripes/tag/layout/LayoutRenderTag.java (working copy)
@@ -92,6 +92,12 @@
*/
public int doEndTag() throws JspException {
try {
+ // Look for a parent layout-definition tag to determine if we are rendering from within a layout-definition tag
+ // If so, we should let our enclosing layout-definition components override ours
+ LayoutDefinitionTag definitionTag = getParentTag(LayoutDefinitionTag.class);
+ if(definitionTag != null) {
+ this.context.merge(definitionTag.getContext());
+ }
HttpServletRequest request = (HttpServletRequest) getPageContext().getRequest();
// Put the components into the request, for the definition tag to use.. using a stack