struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pauli Savolainen" <>
Subject Struts 2 Tiles 2 Runtime composition
Date Thu, 28 Feb 2008 13:08:06 GMT

I am attempting to change an existing tiles definition during an execution
of a Struts action. Example tiles definition:

<definition name="layout" template="/layout.jsp">
  <put-attribute name="head" value="/head.jsp" />
  <put-attribute name="body" value="/login.jsp" />

In the action I want to choose a correct body value based on some
application specific rules. For example if I call:  /user/1, the User
action's show method is executed and the body attribute's value would turn
into /user/show.jsp. This would prevent me from writing definitions for each
possible case.

Tile tutorial says I can get my hands on an attribute context (The class
TilesAttributeContext does not exist in my tiles plugin build). In the
action I do:

TilesAttributeContext attributeContext = container.startContext(request,
attributeContext.setAttribute("body", "/user/show.jsp");
container.render("layout", request, response);
container.endContext(request, response);

I bet this is not the correct way to do it, because it seems that the tiles
definition overrides the value I insert here. Even if I do this in an
interceptor after the action result, the value is not changed.

I suppose there is no option in tiles to define definition with wildcards.
At least I did not find this option. I could point my action results
dynamically to a definition with wildcards.

<definition name="layout" template="/layout.jsp">
  <put-attribute name="head" value="/head.jsp" />
  <put-attribute name="body" value="/login.jsp" />

<definition name="layout.*.*" extends="layout">
  <put-attribute name="body" value="/{1}/{2}.jsp" />

So my question is how would I achieve what am I try to do? Am I on the right
tracks and just missing something, or is this even possible?

I am using 2.1.1-SNAPSHOT builds struts-core and struts tiles-plugin.

Thank you


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message