you must create a property to store current row (for example "thing") getThing and setThing ..
and change your template: <t:grid t:source="thingList" row="thing"> <t:parameter name="name"> <t:pagelink page="Start" context="Thing.name">${thing.name}</t:pagelink> </t:parameter> </t:grid> the concept here is that you give list of objects to grid with source= from which grid reads data for the loop. but the row= tells the grid where you want to store the current value which is where grid writes data. I'm not explaining this very well, but "binding" is a basic tapestry concept. Davor Hrg On 10/17/07, Heck, Bob <[EMAIL PROTECTED]> wrote: > > I have a .page that returns a List<Thing> - that works. > > > > When I try this: > > <t:grid t:source="thingList" row="Thing"> > <t:parameter name="name"> > <t:pagelink page="Start" > context="Thing.name">${Thing.name}</t:pagelink> > </t:parameter> > </t:grid> > > I get this: > > --- > org.apache.tapestry.ioc.internal.util.TapestryException > > Could not convert 'Thing.name' into a component parameter binding: Class > eds.sla.spring.web.tapestry.pages.DocManagement does not contain a > property named 'Thing' (within property expression 'Thing.name'). > Available properties: class, componentResources, thingList. > --- > > thingList is a List<Thing> and is populated. > > the getThingList() on the page works and returns the List<Thing>. So, > why can't tapestry see Thing? Thing is the row, it is the type of > object that is returned in the List. > > > > >