Hard to say without seeing more code.... :) Robert
On Jul 12, 2011, at 7/125:36 PM , Ray Nicholus wrote: > Thanks for this info. I did create a custom value encoder, and I confirmed > that the encoder is returning the correct object on toValue, but the object > is not updated with the current form values on submit. Am I missing > something? > > On Tue, Jul 12, 2011 at 4:45 PM, Robert Zeigler <robert.zeig...@roxanemy.com >> wrote: > >> Yup. >> >> But see: >> >> >> http://tapestry.apache.org/current/tapestry-core/ref/org/apache/tapestry5/corelib/components/AjaxFormLoop.html >> >> In particular, the encoder parameter: >> >> encoder ValueEncoder Required, NOT Allow Null >> prop Required parameter used to convert server-side objects >> (provided from the source) into client-side ids and back. A default encoder >> may be calculated from the type of property bound to the value parameter. >> >> >> When you return the object that represents the new row, AjaxFormLoop is >> going to attempt to convert that into a string representation for storage on >> the client. At submission time, it will attempt to "rehydrate" the object >> from the string. This ensures that the form fields update the correct >> object. If you aren't supplying a custom value encoder, then tapestry is >> providing one for you. If you are using hibernate, then the provided value >> encoder will throw an exception trying to encode an un-persisted object. >> >> So you can do exactly what you proposed, just make sure to override the >> default value encoder with a custom implementation. It could be a really >> simple implementation that just returns the string representation of the >> object's index in your list of objects. >> >> Robert >> >> On Jul 12, 2011, at 7/124:36 PM , Ray Nicholus wrote: >> >>> Can't I simply maintain a list of the persisted objects server side (the >>> source for the ajaxformloop), add a new object to the list in my onAddRow >>> handler, and simply save the non-persisted objects on form submit? >>> >>> On Tue, Jul 12, 2011 at 4:19 PM, Robert Zeigler < >> robert.zeig...@roxanemy.com >>>> wrote: >>> >>>> Hm... no... you don't have to commit it to the DB. BUT. You must be able >> to >>>> handle converting the uncommitted object to/from a string >> representation. >>>> There are a variety of ways to do that, but it's worth noting that the >>>> default value encoders for the hibernate module do not handle >> un-persisted >>>> entities (don't know if you're using hibernate or not, but... sounds >> like >>>> it). >>>> >>>> Robert >>>> >>>> On Jul 12, 2011, at 7/124:08 PM , Ray Nicholus wrote: >>>> >>>>> Nevermind, I'm ditching ajaxformloop - too many shortcomings/problems. >>>> This >>>>> component is not useful for my situation, and I would not consider my >>>>> situation to be unusual at all. Instead, I will opt to use a normal >> loop >>>>> and create my own remove & add links/buttons. It seems, for one, the >>>>> ajaxformloops addRow event requires the server side to create a new row >>>> and >>>>> commit it to the DB, which is a bit difficult to do before obtaining >>>> input >>>>> from the user regarding the values of the form elements in the row. >>>>> >>>>> On Tue, Jul 12, 2011 at 3:22 PM, Ray Nicholus <rnicho...@widen.com> >>>> wrote: >>>>> >>>>>> In my ajaxformloop, I specify an clientId for each of my selects. I >> am >>>>>> working around an issue/shortcoming in Tapesty regarding zone updates >> in >>>> a >>>>>> form loop. To do this, I must be able to specify the IDs of my form >>>>>> elements. For one particular element, in each row of the form loop, I >>>>>> specify a clientId which is unique. However, when I add a row to the >>>> form, >>>>>> tapestry appends something to the ID of this newly create element. >> How >>>> can >>>>>> I stop tapestry from doing this? >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org