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 <[email protected]>
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]