Igor,

Are you sure that will work? I don't think that SmallComponent's initModel method is ever called, because when the Label that is part of SmallComponent is searching for a model (in Component.initModel), it invokes the getModelImpl method of SmallComponent, which doesn't call initModel. (The comment in the code says "Don't call getModel() that could initialize many in-between useless models."

W

On Feb 15, 2009, at 12:23 PM, Igor Vaynberg wrote:

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 <[email protected]> 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: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to