Ouch.  That's not good news.  What can I do to make this work?  Just to
restate again, after changing the value of the first select, I need to
update the options in the second select in the same row.  Then, when I
submit, I need all values reflected in the UI to be persisted.  I am using
Hibernate, so a simple @CommitAfter onSuccess would normally allow me to
commit these changes.

On Mon, Jul 11, 2011 at 12:39 PM, Taha Hafeez <tawus.tapes...@gmail.com>wrote:

> Sorry for not noticing that. IFIAK you wont be able to use loop
> variable(value parameter in loop or ajaxforloop) during a non-submission
> ajax call. In case of a loop, the context of each iteration(i.e the loop
> variable) is stored in hidden fields in the form. A value-encoder is used
> to
> convert the current loop variable into a client side string and on
> submission the same value-encoder converts it back into the loop variable
> which is used to set the value of each form field in an iteration. Now if
> you make an ajax call which only refreshes a zone inside the loop, the
> current loop value(currentSetting in our case) is null as the decoding
> using
> value-encoder does not happen without a submission.
>
> regards
> Taha
>
>
> On Mon, Jul 11, 2011 at 10:37 PM, Ray Nicholus <rnicho...@widen.com>
> wrote:
>
> > I'm not sure what variable you are talking about.  Do you mean
> > "currentSetting"?  There is no "currentSettings" variable.  If so,
> > currentSetting is the variable set by the ajaxformloop so there is
> nothing
> > for me to initialize there.
> >
> > On Mon, Jul 11, 2011 at 12:04 PM, Taha Hafeez <tawus.tapes...@gmail.com
> > >wrote:
> >
> > > My first question was where have you initialized currentSettings. Say
> you
> > > have initialized it in onPrepare(), then during an ajax call, this
> method
> > > is
> > > not called and so currentSettings is not initialized for that request.
> If
> > > you are setting it in setupRender() of the main component, then as only
> > an
> > > internal zone is updated, setupRender() or beginRender() of main
> > > component/page are not called for ajax update of an internal zone.
> > >
> > > So you have to be careful about where you setup currentSettings and
> > whether
> > > that phase is called during ajax update. In case it is not, then you
> have
> > > to
> > > keep the variable in session so that you can use it across multiple
> > > requests.
> > >
> > > regards
> > > Taha
> > >
> > >
> > > On Mon, Jul 11, 2011 at 10:17 PM, Ray Nicholus <rnicho...@widen.com>
> > > wrote:
> > >
> > > > Hello Taha,
> > > >
> > > > I guess I'm confused about why I need to worry about any of this.
> > >  Without
> > > > the zone parameter, I have no problem changing values of my selects.
> > > >  However, I need the zone so that I can change the available options
> in
> > > the
> > > > 2nd select after the value changes in the first select.  Shouldn't I
> > just
> > > > be
> > > > able to refresh the 2nd select via a zone update?
> > > >
> > > > On Mon, Jul 11, 2011 at 11:26 AM, Taha Hafeez <
> > tawus.tapes...@gmail.com
> > > > >wrote:
> > > >
> > > > > Hi Ray,
> > > > >
> > > > > Where are you initializing currentSetting.fileMetadataTyp?e and is
> > this
> > > > > value @Persisted as you are using it across multiple requests.
> > > > >
> > > > > regards
> > > > > Taha
> > > > >
> > > > > On Mon, Jul 11, 2011 at 9:19 PM, Ray Nicholus <rnicho...@widen.com
> >
> > > > wrote:
> > > > >
> > > > > > Here is a fragment of some template code inside of a tapestry
> form:
> > > > > >
> > > > > > <t:ajaxformloop t:id="existingAutoImportSettings"
> > > > > source="existingSettings"
> > > > > > value="currentSetting">
> > > > > >  <t:label for="typeSelect"/>
> > > > > > <t:select t:id="typeSelect" zone="fileMetadataSelectZone"
> > > > > > value="currentSetting.fileMetadataType" label="${message:type}"/>
> > > > > >
> > > > > > <t:zone t:id="fileMetadataSelectZone">
> > > > > > <t:label for="fileMetadataSelect"/>
> > > > > >  <t:select t:id="fileMetadataSelect"
> > > > > > value="currentSetting.fileMetadataObject"
> > > > > >  model="autoImportFileMetadataModel"
> > > label="${message:file-metadata}"/>
> > > > > >  </t:zone>
> > > > > >
> > > > > >                                          ..........
> > > > > >
> > > > > > </t:ajaxformloop>
> > > > > >
> > > > > > <input type="submit" value="Update"/>
> > > > > >
> > > > > >
> > > > > > As soon as I add the zone parameter to the 1st select & reload, I
> > get
> > > a
> > > > > NPE
> > > > > > when I attempt to change the value in the 1st select.  It claims
> > that
> > > > the
> > > > > > currentSetting value is null when attempting to evaluate
> > > > > > currentSetting.fileMetadataType.
> > > > > >
> > > > > > What am I doing wrong?
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to