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? > > > > > > > > > > > > > > > > > > > > >