public class smallcomponent extends component { protected imodel initmodel() { imodel model=super.initmodel(); return new compoundpropertymodel(model); } }
-igor On Sun, Feb 15, 2009 at 8:19 AM, Willis Blackburn <wbo...@panix.com> wrote: > Hello, > > I have a situation that keeps coming up. All of my solutions have seemed > clumsy, which makes me think that there's a better way of approaching this > that I just haven't figured out. Can someone point me in the right > direction? > > What I want is to have a Page that uses CompoundPropertyModel, and then > include a component on that page that also uses CompoundPropertyModel. So > roughly it looks like this: > > public class BigObject { > public SmallObject get SmallObject() { ... } > } > > public class SmallObject { > public String getName() { ... } > } > > public class BigPage { > public BigPage(BigObject object) { > setModel(new CompoundPropertyModel(object)); > add(new SmallComponent("smallObject")); > } > } > > public class SmallComponent { > public SmallComponent() { > add(new Label("name")); > } > } > > If I try to do just this, then I get an error because the label that's part > of SmallComponent finds the BigPage model and fails because there's no > property of BigObject called name. > > So obviously SmallComponent needs some model: > > public class SmallComponent { > public SmallComponent(IModel model) { > setModel(new CompoundPropertyModel(model)); > add(new Label("name")); > } > } > > But what model to give it? I tried passing it new > ComponentPropertyModel("smallObject"), which didn't work because > ComponentPropertyModel implements IComponentAssignedModel and thus can't be > directly wrapped in CompoundPropertyModel. Adding a call to wrap() in the > SmallComponent constructor fixed the problem, but I'm not sure if I can just > call wrap and carry on or if there will be some unforeseen consequence of > that down the road. Is there a standard way of doing this? > > Thanks, > Willis > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org