This still isn't working for me. I need to tweak your example because the value of "body" changes for each page. So if I add one more definition to my tiles-config.xml for an actual end-user page that a user would point a browser to:
<definition name="/myEndUserPage.tiles" extends=".base"> <put name="body" value="/myEndUserPage.jsp"/> </definition> It's not clear which of your definitions I should extend. If I extend .base (the logical choice), I get the same behavior where the layout.jsp is rendered and layout2.jsp is substituted in, but no substitutions are made inside the layout2.jsp. If I extend .sublayout, I get even weirder behavior where it appears to render layout2.jsp but makes no substitutions at all. I looked at the Tiles examples and they don't seem to define individual pages in the tiles-config.xml, as I did above. Could that be my problem? Dan On 8/15/05, [EMAIL PROTECTED] < [EMAIL PROTECTED]> wrote: > > Yes, this can be done. The VBox example is a good example of this. > > Basically it is laid out as follows. > > /layout/layout > /layout/layout2 > > <definition name=".base" page="/layout/layout.jsp"> > <put name="section1" page="menu.jsp"> > <put name="section2" page=".sublayout"> > </definition> > > <Definition name=".sublayout" page="/layout/layout2.jsp"> > <put name="head" page="xyz.jsp"> > <put name="body" page="123.jsp"> > </definition> > > you can then substitute out different components of each section based on > what you are doing. > > > > > [image: Inactive hide details for Daniel Hannum <[EMAIL PROTECTED]>]Daniel > Hannum <[EMAIL PROTECTED]> > > > > *Daniel Hannum <[EMAIL PROTECTED]>* > > 08/15/2005 02:18 PM Please respond to > "Struts Users Mailing List" < > user@struts.apache.org> > > > To > > user@struts.apache.org > cc > > > Subject > > Can nested tile layouts be done? > Hi everyone, I have a question about nesting layouts with Struts > tiles. I've seen this sort of thing discussed in the past, but in > searching I didn't see an example that I could apply to my situation, > nor did I see a good solution. > > Executive summary: > > What I want to do is have a simple layout containing two tiles, both > of which are JSP's. However, one of those JSP's is actually another > layout JSP, which itself contains tile placeholders. I can get Struts > Tiles to do the substitutions for the first layout, but it seems to > treat my second layout as a simple JSP and does not do further tiles > substitutions in the second layout. > > Detailed description: > > We have two separate applications that share a common track bar at the > top of the screen. Beyond that they are completely separate. So, we > have a layout containing "trackbar" and "trackcontent". Trackbar is a > common jsp as you can see below. Trackcontent is simply a blackbox > representing the rest of the app. > > <definition name=".base" page="/layout/layout.jsp"> > <put name="trackbar" value="/common/trackbar.jsp"/> > </definition> > > Then I made two definitions that put in the appropriate subsititution > for trackcontent. *BUT* note that both of those JSP's have their own > Tiles placeholders called "menu" and "body". It's necessary to do this > because the apps may have different layouts but they must share the > trackbar above. > > <definition name=".app1base" extends=".base"> > <put name="trackcontent" value="/layout/app1Layout.jsp"/> > </definition> > > <definition name=".app2base" extends=".base"> > <put name="trackcontent" value="/layout/app2Layout.jsp"/> > </definition> > > Then, since all the pages of a single app share an app-specific menu, > I made another definition put the right page in for "menu" > > <definition name=".app1" extends=".app1base"> > <put name="menu" value="/common/app1NavBar.jsp"/> > </definition> > > <definition name=".app2" extends=".app2base"> > <put name="menu" value="/common/app2NavBar.jsp"/> > </definition> > > Lastly, we have two actual pages that extend the app definitions and > put the right values in for "body" > > <definition name="/app1page1.tiles" extends=".app1"> > <put name="body" value="/app1page1.jsp"/> > </definition> > > <definition name="/app2page1.tiles" extends=".app2"> > <put name="body" value="/app2page1.jsp"/> > </definition> > > Now, when I put all this together and point my browser at, say, > app1page1, I get the top-level layout and the trackbar rendered, and > it renders the appropriate trackcontent for app1, but it does NOT do > the second level of substitutions (i.e. substitute the correct menu > and body) > > Is Struts capable of doing this sort of two-level layout indirection? > If so, how should I change my tile defs and layouts to make it work. > > Thanks a lot! > Dan > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > >