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