Hi team, Not every model is detachable, but right now all models extends from IDetachable because this contract is forced to any implementation for IModel.
The only way users have to communicate their model isn't detachable, for their own purpose, is by creating their own mechanism; but I think IDetachable interface should serve its purpose and to mark / be extended by detachable models, like documented in its own javadoc. I did the changes necessary for this improvement in the branch 'not-detachable' at [1], and hope you can give your input. While working on the branch I noticed a few problems in Wicket's code and already added a fix: - LabeledWebMarkupContainer called wrapped model detach twice (fixed) - SessionSizeModel has no detach logic but was being detached at SessionSizeDebugPanel (fixed) - The following classes had anonymous model wrappers that weren't extending from IWrapModel, that would better communicates their purpose(fixed): LambdaColumn, IModel, LambdaModel, AjaxEditableLabel, LambdaColumn 1 - https://github.com/pedrosans/wicket/tree/not-detachable Pedro Santos