As Thiago pointed out, you need to come up with some sort of dynamic id generator that can be used to set the id in the tml and the responseRenderer. I happened to just use the id you used for your component, but as thiago said, you may want to use that else where and may want to generate a unique one for your zone.
On Thu, Feb 19, 2015 at 1:45 PM, Sumanth <roasteddra...@gmail.com> wrote: > @Chris > Hi Chris, > > I've tried with zone's with t:async and even zone with ^ but doesnt solve > the problem. > > shouldn't the component be a black box from my perspective? And like > George Christman has said, the zone's client id's are uniquely generated by > tapestry itself, but some how it is unaware of this fact. Secondly doing > this manually on the above mentioned component is easy but that is not > dynamic too. > > One more thing, if we are building such a component from scratch maybe we > can take care of it but we have some complex component (a table component > with lazy loading etc) and going inside it to change every id to make it > unique ourselves cannot be done. This issue came up today only because we > needed two such components in the same page but different tabs and when the > second table never updated it's data content instead it was updating the > first table's data. > > ajaxResponseRenderer.addRender("countZone_0", countZone) this will never > work for us because, once the zone is updated then there is high > possibility that the client id would have changed, for example in lazy > loading results , then the results would not further load as the id will be > updated by tapestry. > > kind regards > Sumanth > On 19-Feb-2015 7:15 pm, "George Christman" <gchrist...@cardaddy.com> > wrote: > > > I would have thought tapestry would have done this automatically, but the > > problem is your ajaxresponserender is telling the first zone to update > > rather than _0. This will get your second zone updating. > > > > ajaxResponseRenderer.addRender("countZone_0", countZone); > > > > I'm not sure what the best automated way to do this would be. > > > > On Thu, Feb 19, 2015 at 8:17 AM, Sumanth <roasteddra...@gmail.com> > wrote: > > > > > Forgot. :) > > > > > > TestPage.tml > > > > > > <t:test.TestComponent t:id="abcd" t:count="countForComponentA" /> > > > > > > <t:test.TestComponent t:id="hijk" t:count="countForComponentB" /> > > > > > > TestPage.java > > > > > > public class TestPage { > > > > > > @Property > > > @Persist > > > private int countForComponentA; > > > > > > @Property > > > @Persist > > > private int countForComponentB; > > > > > > } > > > > > > TestComponent.tml > > > > > > <t:container > > > xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd" > > > xmlns:p="tapestry:parameter"> > > > > > > <t:zone t:id="countZone" > > > > Count : ${count} > > > </t:zone> > > > <t:eventLink t:async="true" t:event="updateCount" >Update Count for > > > Component ${compId}</t:eventLink> > > > > > > </t:container> > > > > > > TestComponent.java > > > > > > > > > > > > public class TestComponent{ > > > > > > > > > @Parameter(required=true) > > > @Property > > > private int count; > > > > > > @Inject > > > private ComponentResources componentResources; > > > > > > @Inject > > > private AjaxResponseRenderer ajaxResponseRenderer; > > > > > > @InjectComponent > > > private Zone countZone; > > > > > > public void onUpdateCount() { > > > count++; > > > ajaxResponseRenderer.addRender(countZone); > > > } > > > > > > public String getCompId() { > > > return componentResources.getId(); > > > } > > > } > > > > > > > > > On Thu, Feb 19, 2015 at 2:10 PM, Thiago H de Paula Figueiredo < > > > thiag...@gmail.com> wrote: > > > > > > > On Thu, 19 Feb 2015 11:01:13 -0200, Sumanth <roasteddra...@gmail.com > > > > > > wrote: > > > > > > > > Hello Users, > > > >> > > > > > > > > Hi! > > > > > > > > Please post the code when asking for help. We're not psychics (well, > at > > > > least I know I'm not). :) > > > > > > > > > > > > > > > >> I am facing a problem with Tapestry components and would like to > know > > if > > > >> this is a bug. > > > >> > > > >> I have two components which are the same . They have a count field > > and a > > > >> link to update the count via ajax. > > > >> > > > >> The problem is when you click on the link from the second component > > then > > > >> the count zone of the first component gets updated (from UI > > > perspective). > > > >> But if you refresh the page, then the values are properly shown. > > > >> > > > >> Please see the screenshots for further explanations > > > >> > > > >> http://s7.postimg.org/qrz7zuqjf/Before_Clicking_Anything.png > > > >> > > > >> http://s4.postimg.org/nenbw7brh/After_Clicking_Second_Link.png > > > >> > > > >> http://s10.postimg.org/8kaij68rt/After_Refresh.png > > > >> > > > >> > > > >> Kind Regards, > > > >> Sumanth > > > >> > > > > > > > > > > > > -- > > > > Thiago H. de Paula Figueiredo > > > > Tapestry, Java and Hibernate consultant and developer > > > > http://machina.com.br > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > > > > For additional commands, e-mail: users-h...@tapestry.apache.org > > > > > > > > > > > > > > > > > > > -- > > George Christman > > CEO > > www.CarDaddy.com > > P.O. Box 735 > > Johnstown, New York > > > -- George Christman CEO www.CarDaddy.com P.O. Box 735 Johnstown, New York