Ritesh, I wouldn't call it a bug because the model is updated, albeit indirectly, but perhaps in a slightly inconsistent way as you've pointed out (no setModel call), in the name of optimisation (ie reusing the existing collection) and functional consistency (the implementation of the collection will not change after the programmer has set it (*)).
This (slightly special) component may have been treated a little differently because it is not actually updated by any changes to its own representation in the browser (there is no browser widget representing it) but by changes to its child Checks. The main reason must be the fact that there is already a collection (so, just reuse it) in place before the else block is ever exercised. This extra indirection is what is causing the dilemma. (*)You can also imagine scenarios where the collection is replaced on every update that cause problems because you may have used a special collection implementation (the object your "whatever" variable refers to) that, for example, logs all add/removes or notifies interested parties ... Regards - Cemal http://www.jWeekend.co.uk http://jWeekend.co.uk Ritesh Trivedi wrote: > > Cemel, > > Yes, it does make sense in that respect - as the original collection is > modified. But the fact that setObject() method of the underlying model is > not called, when the object is set, is the problem I am referring to. I > had overridden getObject() and setObject() of the adapter Model class and > was expecting that setObject be called - which I think would have been > called if setModelObject(collection) was there in the else block. When I > get a chance I will modify the code to see if that is the case but for now > I have a work around. > > Thanks for the response. > > > jWeekend wrote: >> >> Ritesh, >> >> There is no need for the else block in the code you have included to call >> setModelObject as it will only be exercised if there is a collection set >> already. >> >> Double check that somewhere in your code you are not explicitly or >> implicitly setting the modelObject to null or setting the model to one >> whose getObject returns null (and, of course, that your "whatever", which >> must be a Collection, is not null). >> >> Regards - Cemal >> http://www.jWeekend.co.uk http://jWeekend.co.uk >> >> >> >> Ritesh Trivedi wrote: >>> >>> Hi, >>> >>> Is there a reason why CheckGroup.updateModel() does not call >>> setModelObject()? If I create Checkgroup with the following >>> >>> CheckGroup myCheckGroup = new CheckGroup("id", new Model() { public >>> Object getObject() { return whatever;}}); >>> >>> Later on - call to myCheckGroup.getModelObject() returns null ! >>> >>> Not sure if this is intended behavior - but its definitely strange. >>> >>> >>> Here is an excerpt from CheckGroup.java - else block is not setting the >>> model object. >>> >>> public void updateModel() >>> { >>> Collection collection = (Collection)getModelObject(); >>> if (collection == null) >>> { >>> collection = (Collection)getConvertedInput(); >>> setModelObject(collection); >>> } >>> else >>> { >>> modelChanging(); >>> collection.clear(); >>> collection.addAll((Collection)getConvertedInput()); >>> modelChanged(); >>> } >>> } >>> >> >> > > -- View this message in context: http://www.nabble.com/CheckGroup-updateModel%28%29-bug--tp19083157p19095333.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
