You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Thomas Cucchietti <th...@gmail.com> on 2012/11/12 10:31:50 UTC
Re: [T5.3]Zone parameter of a form null after ajax rendering?
Hello Alex,
About the flurry of my own responses, sorry if I seemed impatient : my only
concern was to give an update of what I found as it could be useful for
future searches. And I don't give up easily ;)
However, next time, I'll try to less "spam" the mailing list.
Thomas
2012/10/24 Alex Kotchnev <ak...@gmail.com>
> Thomas - indeed, the issue w/ tap5-jquery not evaluating the init was a
> pretty gnarly one. I ran into it myself, albeit in a somewhat different
> context (and unfortunately it didn't ring a bell when I looked at your
> questions).
>
> Just as a side note, seeing the flurry of your own responses, sometimes it
> take a little bit of time for the mailing list to respond to your concerns,
> especially if the issue is not trivial. Thus, it helps to not give up too
> quickly and be patient w/ the list.
>
> Cheers,
>
> Alex K
>
> On Wed, Oct 24, 2012 at 3:31 AM, Thomas Cucchietti <
> thomas.cucchietti@gmail.com> wrote:
>
> > For information, with the help of people from the tapestry-jquery module,
> > the bug has been found.
> >
> > It was located in the addScripts method of tapestry-jquery.js (v3.3.0) :
> > the server reply "inits" wasn't executed.
> >
> > To resolve it, you can use tapestry-jquery v3.3.3.
> >
> > 2012/10/23 Thomas Cucchietti <th...@gmail.com>
> >
> > > I'm really disappointed, but i going to give up as it seems impossible
> to
> > > make it work using Tapestry "mechanics".
> > >
> > > I think that we have to manage everything using js : input validation /
> > > ajax form submission / zone update.
> > >
> > > For information, my goal was to "simulate" a navigation using a zone
> > > wrapped in a dialog component.
> > >
> > >
> > > 2012/10/22 Thomas Cucchietti <th...@gmail.com>
> > >
> > >> Still impossible to manage to have this zone update using the form
> > inside
> > >> the zone.
> > >>
> > >> From the browser console, I can see that the content of the partial
> > >> render response contains what is needed for the zone to be updated :
> > >>
> > >> (...)
> > >> "inits" : [ { "formEventManager" : [ {
> > "formId" : "manageForm_13a8936acde", "validate" : {
> > "submit" : true, "blur" : true } } ]
> },
> > { "linkZone" : [ { "linkId" :
> > "manageForm_13a8936acde", "url" : "/my/page/url.manageform",
> > "zoneId" : "zoneToRefresh" } ],
> > >> (...)
> > >>
> > >> But this doesn't seem to be used.
> > >>
> > >>
> > >> 2012/10/22 Thomas Cucchietti <th...@gmail.com>
> > >>
> > >>> Hello Thiago,
> > >>>
> > >>> I did it by setting explicitely the "id" (on top of the "t:id")
> > >>> parameter of the form to "manageForm", but it keeps adding some
> random
> > >>> value at the end of this (for example "manageForm_13a88baf8ea").
> > >>>
> > >>> Something is missing for the clientid to be static?
> > >>>
> > >>>
> > >>> 2012/10/22 Thiago H de Paula Figueiredo <th...@gmail.com>
> > >>>
> > >>>> Or provide explicit static ids instead of letting them be
> > autogenerated
> > >>>> by Tapestry.
> > >>>>
> > >>>>
> > >>>> On Mon, 22 Oct 2012 11:45:18 -0200, Thomas Cucchietti <
> > >>>> thomas.cucchietti@gmail.com> wrote:
> > >>>>
> > >>>> I keep on trying a way to get this working.
> > >>>>>
> > >>>>> In a previous discussion (see the end of Christian's answer
> > >>>>> here<http://markmail.org/**thread/w6s3jtmwwfw6vfnx#query:**
> > >>>>> +page:1+mid:jbwboaocfw4lkjqj+**state:results<
> >
> http://markmail.org/thread/w6s3jtmwwfw6vfnx#query:+page:1+mid:jbwboaocfw4lkjqj+state:results
> > >
> > >>>>> >),
> > >>>>>
> > >>>>> a workaround for the null id could be the use of a HeartBeat to
> defer
> > >>>>> the
> > >>>>> evaluation of the client id value.
> > >>>>>
> > >>>>> had someone already given it a go?
> > >>>>>
> > >>>>> 2012/10/22 Thomas Cucchietti <th...@gmail.com>
> > >>>>>
> > >>>>> I tried to manually link the zone to the form, but with no
> success.
> > >>>>>>
> > >>>>>> @BeginRender
> > >>>>>> void fixZoneAjaxSupport() {
> > >>>>>> Link link =
> resources.createEventLink("**manualLinkToZone",
> > >>>>>> null);
> > >>>>>> clientBehaviorSupport.**linkZone("manageForm",
> > >>>>>> "zoneToRefresh",
> > >>>>>> link);
> > >>>>>> }
> > >>>>>>
> > >>>>>>
> > >>>>>> The "linkzone" in Tapestry.init() is updated and contains :
> > >>>>>>
> > >>>>>> {
> > >>>>>> "linkId" : "manageForm",
> > >>>>>> "url" : "/my/url/to/page:**manualLinkToZone",
> > >>>>>> "zoneId" : "zoneToRefresh"
> > >>>>>> }
> > >>>>>>
> > >>>>>> However, as the manageForm has random generated number added to
> its
> > >>>>>> client
> > >>>>>> id, it won't be taken into account...
> > >>>>>>
> > >>>>>> Even if I inject the manageForm into my page, as it isn't
> initially
> > >>>>>> present in the page but only after a first zone update, it's null
> > and
> > >>>>>> I
> > >>>>>> have no way to know the exact client id of my form.
> > >>>>>>
> > >>>>>> After some additional search (thanks markmail!), it seems that
> this
> > >>>>>> clientId will always be uniquefied as the form is contained in the
> > >>>>>> zone.
> > >>>>>>
> > >>>>>> Anybody has a clue on my first mail? or at least on the workaround
> > I'm
> > >>>>>> trying to find?
> > >>>>>>
> > >>>>>> Thomas
> > >>>>>>
> > >>>>>>
> > >>>>>> 2012/10/22 Thomas Cucchietti <th...@gmail.com>
> > >>>>>>
> > >>>>>> Hello,
> > >>>>>>>
> > >>>>>>> Is the following behavior intended, as it may be a bug ?
> > >>>>>>>
> > >>>>>>> With this structure :
> > >>>>>>>
> > >>>>>>> <t:zone t:id="zoneToRefresh" id="zoneToRefresh">
> > >>>>>>> <t:delegate to="activeBlock"/>
> > >>>>>>> </t:zone>
> > >>>>>>>
> > >>>>>>> <t:block t:id="empty">
> > >>>>>>> <!-- empty block -->
> > >>>>>>> </t:block>
> > >>>>>>>
> > >>>>>>> <t:block t:id="manageBlock">
> > >>>>>>> <t:form t:id="manageForm" zone="zoneToRefresh">
> > >>>>>>> <t:radiogroup t:value="manage">
> > >>>>>>> <input type="radio" t:type="radio"
> t:value="true"/>
> > >>>>>>> Yes
> > >>>>>>> <input type="radio" t:type="radio"
> > t:value="false"/>
> > >>>>>>> No
> > >>>>>>> </t:radiogroup>
> > >>>>>>>
> > >>>>>>> <t:submit value="Submit form"/>
> > >>>>>>> </t:form>
> > >>>>>>> </t:block>
> > >>>>>>>
> > >>>>>>> (I don't have included the button that refresh the zone the first
> > >>>>>>> time)
> > >>>>>>>
> > >>>>>>> The method getActiveBlock() return the emptyBlock when the page
> > >>>>>>> initially
> > >>>>>>> loads, then it returns the manageBlock once the refresh button is
> > >>>>>>> hit.
> > >>>>>>>
> > >>>>>>> The problem is that the form contained in the manageBlock doesn't
> > >>>>>>> refresh
> > >>>>>>> the zone in Ajax, and reload the whole page instead.
> > >>>>>>>
> > >>>>>>> From what I've searched, it seems that, when the manage block is
> > >>>>>>> rendered, the "zone" parameter of the manageForm is null (see
> line
> > >>>>>>> 356 of
> > >>>>>>> Form.class, in beginRender method) whereas it should be valued
> with
> > >>>>>>> the
> > >>>>>>> zoneToRefresh.
> > >>>>>>>
> > >>>>>>> I have already encoutered similar errors : the forms and
> > actionlinks
> > >>>>>>> that
> > >>>>>>> should fire ajax reloads, fire page reload instead when they have
> > >>>>>>> not been
> > >>>>>>> rendered at the initial page loading.
> > >>>>>>>
> > >>>>>>> Regards,
> > >>>>>>> Thomas
> > >>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>
> > >>>> --
> > >>>> Thiago H. de Paula Figueiredo
> > >>>>
> > >>>> ------------------------------**------------------------------**
> > >>>> ---------
> > >>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<
> > users-unsubscribe@tapestry.apache.org>
> > >>>> For additional commands, e-mail: users-help@tapestry.apache.org
> > >>>>
> > >>>>
> > >>>
> > >>
> > >
> >
>