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]