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