Dear Laurie,

You forgot to set a page in your tile definition with the path attribute.
The definition needs to be more like so:

<definition name="tiles.view" path="/tiles-test/template.jsp">
   <put name="title" value="PAGE TITLE"/>
   <put name="content" value="/tiles-test/index.jsp"/>
</definition>

Where /tiles-test/template.jsp could look like:

<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
<html>
<head>
<title>
<!-- insert the "title" attribute from your definition as a string -->
<tiles:getAsString name="title" />
</title>
</head>
<body>
<!-- insert the "content" attribute from your definition as a parsed JSP
page -->
<tiles:insert attribute="content">
</body>
</html>

Regards,
David

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] Behalf Of Laurie Harper
Sent: Monday, March 15, 2004 7:31 PM
To: [EMAIL PROTECTED]
Subject: Using tiles


This is a newbie question on using the Tiles with Struts (never tried it
before). I followed the instructions in the first half of Tiles 101/201,
linked from the Tiles documentation but am having no luck on the
Struts/Tiles integration front. I suspect I've simply missed a step
somewhere.

Here's what I've done:

* Ensured Tiles is enabled in struts-conf.xml (it was by default):
   <plug-in className="org.apache.struts.tiles.TilesPlugin" >
     <set-property property="definitions-config"
                          value="/WEB-INF/conf/tiles-defs.xml" />
     <set-property property="moduleAware" value="true" />
     <set-property property="definitions-parser-validate" value="true" />
   </plug-in>

* added a tile definition to teils-defs.xml:
     <definition name="tiles.view">
         <put name="title" value="PAGE TITLE"/>
         <put name="content" value="/tiles-test/index.jsp"/>
     </definition>
* added an action mapping to struts-conf.xml pointing to the tile:
     <action path="/tiles"
             type="DummyTilesAction">
         <forward name="view" path="tiles.view"/>
     </action>

* created /tiles-test/index.jsp with some static text content

What I expected was that when I hit /tiles.do I'd get back the static
content from /tiles-test/index.jsp. What I actually get back is the
string '<html><body></body></html>', which I haven't defined anywhere.

I also tried implementing execute() in DummyTilesAction to do a 'return
mappings.findForward("view");' but no luck. Changing the name of the
view in struts-conf.xml or tiles-defs.xml makes no difference, and
generates no error messages when they don't match, which makes me
suspicious...

The tiles defs do seem to be read in on startup:

L4J 2004-03-15 19:22:47,801 DEBUG
org.apache.struts.tiles.xmlDefinition.I18nFactorySet default
factory:{tiles.layout.basic={name=tiles.layout.basic,
path=/tiles.layout.basic.jsp, role=null, controller=null,
controllerType=null, controllerInstance=null, attributes={title=DEFAULT
TITLE, content=/tiles.content.default.jsp,
menu=/tiles.layout.basic.menu.jsp}}
, tiles.view={name=tiles.view, path=null, role=null, controller=null,
controllerType=null, controllerInstance=null, attributes={title=PAGE
TITLE, content=/tiles-test/index.jsp}}
}
L4J 2004-03-15 19:22:48,065 DEBUG
org.apache.struts.tiles.xmlDefinition.I18nFactorySet Factory initialized
from file '/WEB-INF/conf/tiles-defs.xml'.
L4J 2004-03-15 19:22:48,065 INFO  org.apache.struts.tiles.TilesPlugin
Tiles definition factory loaded for module ''.

and the action mapping was picked up correctly; when I hit /tiles.do I
get this logged:

L4J 2004-03-15 19:25:49,791 DEBUG
org.apache.struts.action.RequestProcessor  Looking for Action instance
for class DummyTilesAction

But no Tiles related logging, and the page specified in the tile
definition isn't loaded. The taglib documentation at
http://jakarta.apache.org/struts/userGuide/struts-tiles.html says that I
have to call initComponentDefinitions or otherwise arrange to have Tiles
initialized. I thought the configuration in struts-conf.xml would make
that happen, but tried calling the tag in case. That didn't seem to help.

What am I doing wrong? If I've left any information out, please ask and
I'll post it.

Thanks,

L.



---------------------------------------------------------------------
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]

Reply via email to