Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-5538

When using Component.setDefaultModel, only detach the previous model if the new one is different

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 7.0.0-M1, 6.15.0
    • Component/s: wicket
    • Labels:
      None

      Description

      From my post on the list:

      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)

      Unknown macro: { wrappedModel = ((IWrapModel<?>)prevModel).getWrappedModel(); }

      // Change model
      if (wrappedModel != model)
      {
      // Detach current model only if we really change the model
      if (prevModel != null)

      Unknown macro: { 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?

        Attachments

        1. WICKET-5538.diff
          0.9 kB
          Guillaume Smet

          Activity

            People

            • Assignee:
              mgrigorov Martin Tzvetanov Grigorov
              Reporter:
              gsmet Guillaume Smet
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: