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]