Am 27.09.2012 09:01, schrieb Martin Grigorov:
Hi,

I think, there is a little difference in using setDefaultModel and setDefaultModelObject .. the first one sets a new model instance, the second only change the value in the existing model. Some pseudo-code:

class APanel extends Panel {
    APanel(String id,IModel<Some> model) {
        super(id,model);

        add(new Label("name",new PropertyModel(getDefaultModel(),"name"));
    }
}

If you replace the value in model, everything is fine and works as expected. If you call setDefaultModel you might think, that everything is fine, but its not. A child component does not use getParent().getDefaultModel() to get these changes. I saw a lot of code like this, which leads to trouble, if you change the model and not the value.

If there is no benefit in using setDefaultModel over setDefaultModelObject i would like to remove this method. This could prevent many "you might not got the full picture how to use wicket the right way" errors.

Michael

Hi,

Most of the time it is recommended to use a dynamic model, so there is
no reason to replace the component's model.
Component#setDefaultModel() gives you semi-dynamic nature - you can
replace the model completely with a new one. Same with
#setDefaultModelObject().

What is the problem you face with it ?

On Thu, Sep 27, 2012 at 9:57 AM, Michael Mosmann <[email protected]> wrote:
Hi,

is there any usefull application of Component.setDefaultModel(...)? IMHO
this Method is the cause for much trouble without any benefit. But maybe i
did not understand when someone should replace a component model...

thanks
Michael



Reply via email to