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

Reply via email to