Still having trouble grabbing an attribute from a tiles definition. I
was doing this OK with Sep 06 code like so:
String sTilesDefName = (String) request.getAttribute("tile_name");
TilesContext tilesContext = new
ServletTilesContext(session.getServletContext(), request, response);
ComponentDefinition componentDefinition =
TilesUtil.getDefinition(sTilesDefName, tilesContext);
String sMyAtribute = (String)
componentDefinition.getAttribute("myAttribute");
String sTilesDefName = (String)
request.getAttribute(RovingNavServlet.ATTR_ACTIVEPAGE);
David DeWolfe suggested I try the following:
TilesContainer container = TilesAccess.getContainer(context);
ComponentContext ctx = container.getComponentContext(req, res);
ComponentAttribute attr = ctx.getAttribute(name);
I did this but I find that attr is always null. Containter and ctx
appear to be valid objects.
So I modified my code a bit including checking to see if the container
was really recognizing my definition (isValidDefinition). It is. If I
give the name of any existing definition then it returns true. If I give
it a name not in my tiles-defs then it returns false.
Ctx.getAttributeNames is coming back with no attributes (i.e. my while
(it.hasNext()) loop never executes). So I'm still stuck.
Following is my current code:
try
{
TilesContainer container =
TilesAccess.getContainer(session.getServletContext());
String sTilesDefName = (String) request.getAttribute("tile_name");
if (container.isValidDefinition(request, response, sTilesDefName))
System.out.println("valid definition");
else
System.out.println("invalid definition");
ComponentContext ctx = container.getComponentContext(pageContext);
System.out.println("->ctx=" + ctx);
Iterator it = ctx.getAttributeNames();
int i=0;
while (it.hasNext())
System.out.println("->" + i++);
}
catch (Exception e)
{
System.out.println(e);
}
Sam
------------------------------------------------
-----Original Message-----
From: Stone, Sam [mailto:[EMAIL PROTECTED]
Sent: Tuesday, January 02, 2007 1:28 PM
To: Struts Developers List
Subject: RE: How to access componentDefinition?
In your example:
TilesContainer container = TilesAccess.getContainer(context);
ComponentContext ctx = container.getComponentContext(req, res);
ComponentAttribute attr = ctx.getAttribute(name);
ctx comes back with no attributes (therefore attr results in null).
I think I want to call getContainer with pageContext. How do I get the
pageContext?
To recap what I WAS doing with the old API - I was inspecting a tiles
definition and searching for a specific attribute. I'm doing this BEFORE
dispatching to the tiles servlet.
Sam
-----Original Message-----
From: David H. DeWolf [mailto:[EMAIL PROTECTED] On Behalf Of David H.
DeWolf
Sent: Tuesday, January 02, 2007 10:36 AM
To: Struts Developers List
Subject: Re: How to access componentDefinition?
potentially . . .it depends on your environment. My guess is that from
your example the answer is yes.
David
Stone, Sam wrote:
TilesContainer container = TilesAccess.getContainer(context);
Is "context" the servletContext?
-----Original Message-----
From: David H. DeWolf [mailto:[EMAIL PROTECTED] On Behalf Of David H.
DeWolf
Sent: Tuesday, January 02, 2007 10:30 AM
To: Struts Developers List
Subject: Re: How to access componentDefinition?
Hi Sam:
Everything is now done through the container.
Try something like this:
TilesContainer container = TilesAccess.getContainer(context);
ComponentContext ctx = container.getComponentContext(req, res);
ComponentAttribute attr = ctx.getAttribute(name);
David
Stone, Sam wrote:
Using the API from Sep 2006 I was able to access externally an
attribute
from a tiles definition as follows:
String sTilesDefName = (String) request.getAttribute("tile_name");
TilesContext tilesContext = new
ServletTilesContext(session.getServletContext(), request, response);
ComponentDefinition componentDefinition =
TilesUtil.getDefinition(sTilesDefName, tilesContext);
String sMyAtribute = (String)
componentDefinition.getAttribute("myAttribute");
I can't quite figure out how to do this using the current Tiles 2
API.
Sam
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]