Hi,
I don't see the point of detaching the prevModel if the model is not changing.
I was thinking about changing the logic of Component.setDefaultModel like that:
public Component setDefaultModel(final IModel<?> model)
{
IModel<?> prevModel = getModelImpl();
IModel<?> wrappedModel = prevModel;
if (prevModel instanceof IWrapModel)
{
wrappedModel = ((IWrapModel<?>)prevModel).getWrappedModel();
}
// Change model
if (wrappedModel != model)
{
// Detach current model only if we really change the model
if (prevModel != null)
{
prevModel.detach();
}
modelChanging();
setModelImpl(wrap(model));
modelChanged();
}
return this;
}
Note that it's something that hurts us a lot in a particular pattern
we have here. We change the default model in onConfigure and every
time we do it it's detached even if it's the exact same model.
We could add a check in our code but I'm thinking it could be better
to do it in Wicket directly.
Thoughts?
--
Guillaume