Thanks for your reply.

I could do that, but then SmallComponent would effectively depend on BigObject. The idea is that SmallComponent should work regardless of where its model object actually lives. It could be a standalone object, or part of another object such as BigObject.

W


On Feb 15, 2009, at 12:00 PM, jcgarciam wrote:


Hi,

Have you tried using an expression as the name of your Label component which
match your object model hierarchy.

i.e:

add(new Label("smallObject.name"));





Willis Blackburn 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]




--
View this message in context: 
http://www.nabble.com/N-level-CompoundPropertyModel-tp22024267p22024775.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]



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

Reply via email to