You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Bill Schneider <bs...@vecna.com> on 2004/08/19 18:14:40 UTC
Tiles: multiple layers of layout
I'm trying to do something with Tiles like this:
<definition name=".mainLayout" page="/tiles/mainLayout.jsp">
<put name="header" value="/tiles/header.jsp">
<put name="footer" value="/tiles/footer.jsp">
<put name="title" value="${title}"/>
<put name="body" value="${body}"/>
</definition>
<definition name=".nestedLayout" extends=".mainLayout">
<put name="body" value="/tiles/nestedLayout.jsp"/>
<put name="nestedBody" value="${nestedBody}"/>
</definition>
<definition name=".nested1" extends=".nestedLayout">
<put name="title" value="nested page"/>
<put name="nestedBody" value="/tiles/nested1.jsp"/>
</definition>
When ".nested1" is displayed, I see the main layout as expected, with
the proper title; and nestedLayout.jsp gets included as the body. But
inside nestedLayout.jsp, <tiles:get name="nestedBody"/> doesn't work.
I could always do something in mainLayout.jsp like
<tiles:importAttribute/>
<tiles:insert name="body">
// foreach imported attribute {
<tiles:put name="[attr name]" value="[attr value]"/>
// }
</tiles:insert>
This works but doesn't feel right. Is there a better way to export
attributes or otherwise preserve the current Tiles context through a
tiles:insert or tiles:get?
-- Bill
--
Bill Schneider
Chief Architect
Vecna Technologies
5004 Lehigh Rd., Suite B
College Park, MD 20740
bschneider@vecna.com
t: 301-864-7253 x1140
f: 301-699-3180
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: Tiles: multiple layers of layout
Posted by Michael McGrady <mi...@michaelmcgrady.com>.
Michael McGrady wrote:
> Bill Schneider wrote:
>
>> I'm trying to do something with Tiles like this:
>>
>> <definition name=".mainLayout" page="/tiles/mainLayout.jsp">
>> <put name="header" value="/tiles/header.jsp">
>> <put name="footer" value="/tiles/footer.jsp">
>> <put name="title" value="${title}"/>
>> <put name="body" value="${body}"/>
>> </definition>
>>
>> <definition name=".nestedLayout" extends=".mainLayout">
>> <put name="body" value="/tiles/nestedLayout.jsp"/>
>> <put name="nestedBody" value="${nestedBody}"/>
>> </definition>
>>
>> <definition name=".nested1" extends=".nestedLayout">
>> <put name="title" value="nested page"/>
>> <put name="nestedBody" value="/tiles/nested1.jsp"/>
>> </definition>
>>
> I am not sure what is going on here, Bill, but it looks like you mean
> to have something like the following?
>
> <definition name=".mainLayout" page="/tiles/mainLayout.jsp">
> <put name="header" value="/tiles/header.jsp">
> <put name="footer" value="/tiles/footer.jsp">
> <put name="title" value="${title}"/>
> <put name="body" value="${body}"/>
> </definition>
>
> <definition name=".nestedLayout" extends=".mainLayout">
> <put name="body" value="/tiles/nestedLayout.jsp"/>
> <put name="body" value="${nestedBody}"/>
> </definition>
>
> That is, it looks like you want to override rather than extend the
> definition? Is that right?
>
> Michael
Oops! I meant:
<definition name=".nestedLayout" extends=".mainLayout">
<put name="body" value="${nestedBody}"/>
</definition>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: Tiles: multiple layers of layout
Posted by Michael McGrady <mi...@michaelmcgrady.com>.
Bill Schneider wrote:
> I'm trying to do something with Tiles like this:
>
> <definition name=".mainLayout" page="/tiles/mainLayout.jsp">
> <put name="header" value="/tiles/header.jsp">
> <put name="footer" value="/tiles/footer.jsp">
> <put name="title" value="${title}"/>
> <put name="body" value="${body}"/>
> </definition>
>
> <definition name=".nestedLayout" extends=".mainLayout">
> <put name="body" value="/tiles/nestedLayout.jsp"/>
> <put name="nestedBody" value="${nestedBody}"/>
> </definition>
>
> <definition name=".nested1" extends=".nestedLayout">
> <put name="title" value="nested page"/>
> <put name="nestedBody" value="/tiles/nested1.jsp"/>
> </definition>
>
I am not sure what is going on here, Bill, but it looks like you mean to
have something like the following?
<definition name=".mainLayout" page="/tiles/mainLayout.jsp">
<put name="header" value="/tiles/header.jsp">
<put name="footer" value="/tiles/footer.jsp">
<put name="title" value="${title}"/>
<put name="body" value="${body}"/>
</definition>
<definition name=".nestedLayout" extends=".mainLayout">
<put name="body" value="/tiles/nestedLayout.jsp"/>
<put name="body" value="${nestedBody}"/>
</definition>
That is, it looks like you want to override rather than extend the
definition? Is that right?
Michael
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org