Hi, (If Igor says anything different, just ignore this! :-)) The change that I'd consider would the standard one of if it'd be worth passing in a custom IMyBean interface derived from IModel, to cover the case where I might want to use something like-but-not-a MyBean, but I can't see anything wrong with passing it directly if that's not the case.
/Gwyn On 16/03/07, David Leangen <[EMAIL PROTECTED]> wrote: > > Ok, thanks for the info. > > Sorry for not letting this thread die... but one more question (and > hopefully last): > > Right now, the page I refactored looks like this: > > MyPage page = new MyPage( MyBean bean ) > { > SomeComponent component = new Component( "id", new MyModel( bean ) ); > bla bla > Hi, Mom > } > > > So, I'm injecting my bean, as is, into the constructor of the page. The > bean is created somewhere else. In the MyModel above, I'm actually using > a field of a field of the model, so I get: > > class MyModel implements IModel > { > private MyThing thing; > > public MyModel( MyBean bean ) > { > this.thing = bean.getField().getThing(); > } > > More bla bla > } > > > So: > > Is it "ok" to pass in the raw bean into the page contructor, or should I > be passing in a model instead? > > Is there an even better way to go about all this that I haven't noticed? > > > In any case, what I do really like about IModel is that it gives a > direct translation between the controls and my bean. So cool! > > > Cheers, > David > > > > On Thu, 2007-03-15 at 07:27 -0800, Igor Vaynberg wrote: > > it is mostly internal and will be removed in the coming model refactor > > > > -igor > > > > > > On 3/14/07, David Leangen <[EMAIL PROTECTED]> wrote: > > > > > > Ok, thanks for your help, guys. I finally figured out what you > > meant by > > your last comments, and implemented one way to go about this. > > Not sure > > if it's the "best" way, but it's certainly much cleaner than > > before. > > > > Thanks!! > > > > Just one question remaining. > > > > What's the deal with getNestedModel( )? > > > > It sounds useful, but that never gets invoked. > > > > > > What is it for, and how would I use it? > > > > > > Cheers, > > Dave > > > > > > > > > > > > > > On Tue, 2007-03-13 at 16:07 +0900, David Leangen wrote: > > > :-) > > > > > > > if you disable a formcomponent then neither a set or get > > will be > > > > called > > > > > > > > > Yes. But it's not disabled, and get is being called. Just > > not set. > > > > > > I must be doing something wrong or missing something in the > > impl here... > > > but I don't see what it is. :-( > > > > > > > > > Cheers, > > > Dave > > > > > > > > > > > > > > > > > > > Sorry for pulling you guys back to my mail > > issue. ;-) > > > > > > > > Since setObject() is not being called, I don't see > > how to > > > > apply my > > > > complex model to its children. I thought I could > > pull this off > > > > with > > > > setModel()... but it just ain't being called. > > > > > > > > > > > > Ok, let's stick with the "person" object. The > > person has > > > > attributes, and > > > > one of these attributes may itself have > > attributes. > > > > > > > > For example: > > > > > > > > Person: > > > > isSingle? > > > > > > > > if( isSingle ) > > > > > > > > [ ] does dishes? > > > > [ ] makes bed? > > > > > > > > else > > > > > > > > [ ] has kids? > > > > [ ] walks dog? > > > > > > > > Whatever. > > > > > > > > Point is, if the isSingle attribute is "true", I > > want to > > > > enable certain > > > > checkboxes and bind those values DIRECTLY to the > > model. Same > > > > goes if > > > > isSingle is false. > > > > > > > > Right now, I collect a boolean for each value and > > set them > > > > back > > > > "manually" into my model, which seems really > > messy. > > > > > > > > Same thing for enabling/disabling my checkboxes > > above: I do > > > > that > > > > "manually" depending on the current value in the > > model. > > > > > > > > > > > > What I'd really like to do is somehow bind all > > those controls > > > > directly > > > > to my model so I'm not duplicating parts of the > > model for each > > > > control. > > > > > > > > > > > > Any hints that would enlighten me on how to do > > this? > > > > > > > > > > > > Thanks so much!! > > > > > > > > > > > > > > > > On Mon, 2007-03-12 at 22:58 -0700, Eelco Hillenius > > wrote: > > > > > Maybe it is good to gather a couple of use cases > > and pros > > > > and cons and > > > > > start a separate thread? > > > > > > > > > > Eelco > > > > > > > > > > On 3/12/07, Igor Vaynberg > > <[EMAIL PROTECTED]> wrote: > > > > > > ah, but if you modify a collection that is a > > model object > > > > are you infact > > > > > > "changing" the object? you are not changing > > the reference > > > > itself but you are > > > > > > doing something that has sideffects. > > > > > > > > > > > > eg lets say you have a dropdown choice, but > > what you want > > > > is a collection of > > > > > > ids not the objects. the easiest way is to > > have a model in > > > > between that > > > > > > translates a collection of objects to ids and > > back again. > > > > but how to do that > > > > > > if setobject() is never called? > > > > > > > > > > > > -igor > > > > > > > > > > > > > > > > > > > > > > > > On 3/12/07, Eelco Hillenius < > > [EMAIL PROTECTED]> > > > > wrote: > > > > > > > > > > > > > > If you are not changing the object that is > > the subject > > > > of the model, I > > > > > > > see no reason why setObject should be > > called. > > > > > > > > > > > > > > Eelco > > > > > > > > > > > > > > On 3/12/07, Igor Vaynberg > > <[EMAIL PROTECTED] > > > > > wrote: > > > > > > > > actually we are inconsistent in some > > places and i have > > > > been trying to > > > > > > fix > > > > > > > > it. what we mostly do is whenever we work > > with a > > > > collection we clear it > > > > > > and > > > > > > > > repopulate it. but we never call > > setobject() on the > > > > model which imho is > > > > > > > > wrong. sometimes i have a model in between > > that > > > > depends on setobject() > > > > > > > > called whenever a property is updated > > because it does > > > > some translation > > > > > > and > > > > > > > > its a lot easier to proxy a model then it > > is to proxy > > > > a collection. just > > > > > > my > > > > > > > > 2c. > > > > > > > > > > > > > > > > -igor > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 3/12/07, Eelco Hillenius > > > > <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > > > > now all you have to do is > > > > > > > > > > > > > > > > > > > > > > > > LoadableDetachableModel > > person=new > > > > LoadalbeDetachableModel(id); > > > > > > > > > > > > new CheckBox(this, "cb", new > > > > PersonCheckBoxModel(person)); > > > > > > > > > > > > > > > > > > > > > > > > and everything magically works, > > hope it gives > > > > you some ideas. > > > > > > > > > > > > > > > > > > > > Yes, it does indeed give me many > > ideas. Right now, > > > > I'm trying to > > > > > > figure > > > > > > > > > > out the implementation details. > > > > > > > > > > > > > > > > > > > > While stepping through the code, I > > noticed that > > > > the setObject() > > > > > > method > > > > > > > > > > of my IModel never gets called. > > > > > > > > > > > > > > > > > > > > When is this _supposed_ to be set, and > > why would > > > > it not be called in > > > > > > my > > > > > > > > > > case? > > > > > > > > > > > > > > > > > > There's not always a need for setObject > > to be > > > > called. I haven't read > > > > > > > > > the whole thread, but in the above > > example, you work > > > > on a property > > > > > > > > > ('cb') of the person, so all you have to > > do > > > > (probably) is do something > > > > > > > > > with this updated object (like saving > > it). You would > > > > only do setObject > > > > > > > > > when you would provide a new person, and > > when the > > > > getObject > > > > > > > > > implementation wouldn't take care of > > that. > > > > > > > > > > > > > > > > > > Personally, I rarely use/ depend on > > setObject as > > > > working with > > > > > > > > > properties of objects is a very typical > > thing to > > > > do. > > > > > > > > > > > > > > > > > > Hope this makes sense, > > > > > > > > > > > > > > > > > > Eelco > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- Download Wicket 1.2.5 now! - http://wicketframework.org ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user