Hi,

I don't see what is wrong in your code. Maybe you can try to use execute(...) instead of perform(...) which is deprecated. You can also check if your method is properly called, and so if attribute are really set (add a println in your method). If you still have problems, you can send me directly a a jar or zip file with a simple example reproducing the problem.

Cedric

Zaraza / Corridor of Cells wrote:

Hi,
I an trying to build a site using Tiles & Struts (first time newbie) and it seems I am unable to get the Tiles controller to override at run-time the attribute values (e.g. page title)

I'm using Struts 1.0.2 and tilesForStruts1.0.jar. My tile-defs.xml looks like:

<tiles-definitions>

<definition name="corridorTemplate" path="/templates/template.jsp">
<put name="page.title" value="Extreme/dark music webzine"/>
<put name="content.title" value="Corridor of Cells"/>
<put name="content.body" value=""/>
<put name="leftbar" value="/templates/leftbar.jsp"/>
<put name="rightbar" value="/templates/rightbar.jsp"/>
<put name="footer" value="/templates/footer.jsp"/>
</definition>
<!-- main page -->
<definition name="whatsnewTemplate" extends="corridorTemplate" controllerUrl="/whatsnewController.do">
<put name="page.title" value="TEST"/>
<put name="content.title" value="TEST"/>
<put name="content.body" value="TEST"/> </definition>

</tiles-definitions>

The "/whatsnewController.do" controller action is defined in struts-config.xml as:

<action path="/whatsnewController" type="com.corridorofcells.action.WhatsNewController"></action>

and the actual com.corridorofcells.action.WhatsNewController class's perform() looks like:

public final class WhatsNewController extends TilesAction {

public ActionForward perform(
ComponentContext context,
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
context.putAttribute("page.title", "Extreme/dark music webzine");
context.putAttribute("content.title","What's New");
context.putAttribute("content.body", "Hey, what's new????");
return null;

}

}


However, at run-time, the values of "page.title" and "content.title" are never overriden (in the "template.jsp" I fetch them using <tiles:getAsString name="page.title"> etc).

They're always left to the base value I defined in "whatsNewTemplate", i.e. the value "TEST". They never seem to get updated at run-time with the overriden values I "put" in the WhatsNewController class.

I've wasted 2 days on this and about to give up and just do down-and-dirty JSP instead of clean and smooth Tiles...the docs say this should work, but in my case such a basic example just doesn't work.

Help! What am I doing wrong here?

Thanks in advance for help,
Jacek




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