Hi, In this particular code I think the "problem" is PropertyModel, since it brings the type unsafety.
Another solution is to make Component<T>, this way we can remove #setDefaultModel() and have #setModel(IModel<T>) only and such problems will go away. But as discussed in early Wicket 1.4 days this will lead to more typing. With Java 7 diamonds it is half the typing though. For now you can use GenericPanel, GenericPage and all FormComponent. On Thu, Sep 27, 2012 at 10:41 AM, Michael Mosmann <mich...@mosmann.de> wrote: > 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 <mich...@mosmann.de> >> 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 >> >> >> > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com