1) You do need to configure a tile for every page, but since tile definitions use inheritance, it's not a big deal. You just define what's unique to that page (typically the page title and the body content, but can obviously be other things as well). Here's what you're missing:
In tiles.xml: <tiles-definitions> <definition name="homeTiles" template="/pages/layout/layout.jsp"> <put name="title" value="Home"/> <put name="header" value="/pages/layout/header.jsp" /> <put name="footer" value="/pages/layout/footer.jsp" /> <!-- just an example --> <put name="nav" value="/pages/layout/sideNav.jsp" /> <!-- just an example --> </definition> <definition name="tile.TestPage" extends="homeTiles"> <!-- will automatically inherit the attributes of 'homeTiles" --> <put name="title" value="Test Title"/> <put name="body" value="/pages/test.jsp" /> </definition> </tiles-definitions> 2) Then, in struts.xml, instead of forwarding to /pages/test.jsp, forward to "tile.TestPage" instead. Presto. ----- Original Message ---- From: Mansour <[EMAIL PROTECTED]> To: Struts Users Mailing List <user@struts.apache.org> Sent: Monday, May 14, 2007 9:08:48 PM Subject: Re: Problems getting started with Tiles2/S2 I followed every single step in this email. and couldn't get tiles to work properly. I am not getting any error but the pages are displaying the way they are with no header added. I am not sure how tile works but it seems to me that I have to configure it for each single page which doesn't make sense to me. Here's exactly what I did: in web.xml added : <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener> In tiles.xml in the same directory as web.xml : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://struts.apache.org/dtds/tiles-config_2_0.dtd";> <tiles-definitions> <definition name="homeTiles" template="/pages/layout/layout.jsp"> <put name="title" value="Home"/> <put name="header" value="/pages/layout/header.jsp" /> </definition> </tiles-definitions> in /pages/layout/layout.jsp : <%@ taglib uri="http://tiles.apache.org/tags-tiles"; prefix="tiles"%> <%@ taglib prefix="s" uri="/struts-tags" %> <tiles:importAttribute name="title" scope="request"/> <html> <head><title><tiles:getAsString name="title"/></title></head> <body> <tiles:insertAttribute name="header"/> <p id="body"> <tiles:insertAttribute name="body"/> </p> </body> </html> in /pages/layout/header.jsp simply: This is a header for testing ! and in my testing page /pages/test.jsp: <%@ taglib prefix="s" uri="/struts-tags" %> This is a testing page ! What's going on ? can any one help? Rick Schumeyer wrote: > I can now answer my own question regarding Struts2/Tiles2. I hope > this information helps someone else. > > I frankly have little grasp of the relationship between S2 and T2, but > this information here works for me. If anything is incorrect or > misleading I would love to know about it. > > This information applies to Struts 2.0.6. This version is only > compatible with whatever version of tiles is included. As is stated > in many places, it does not work with the current latest version of > Tiles, 2.0.3. > > So, if you are trying to use Tiles 2.0.3 or later...don't read the > rest of this message. > > In your web.xml you will need a section like this: > <listener> > <listener-class> > org.apache.struts2.tiles.StrutsTilesListener > </listener-class> > </listener> > > In the same directory you need a file called tiles.xml (I'm not sure > how this is found...I saw someone else who has a file called > tiles-defs.xml) > THIS IS IMPORTANT: Use the DTD below regardless of what you see in > other documentation. > > Notice the use of "put" and not "put-attribute" that you may have seen > elsewhere. > > > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE tiles-definitions PUBLIC > "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" > "http://struts.apache.org/dtds/tiles-config_2_0.dtd";> > > <tiles-definitions> > > <definition name="homeTiles" template="/layout/layout.jsp"> > <put name="title" value="Home"/> > <put name="header" value="/test/header.jsp" /> > <put name="menu" value="/test/menu.jsp"/> > <put name="body" value="/test/home.jsp"/> > <put name="footer" value="/test/footer.jsp"/> > </definition> > > </tiles-definitions> > > And in layout.jsp use: > > <%@ taglib uri="http://tiles.apache.org/tags-tiles"; prefix="tiles"%> > > Combined with statements like: > > <tiles:insertAttribute name="header" /> > > Good luck. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]