At first glance I'm torn about this, to be honest. On the one hand,
yes, not having to do that would be neat. On the other hand, that makes
models even more magic to new users, and not obvious what happens.
Especially if you create a model in e.g. your constructor and just
reference it a method of an anonymous class, that would not be detected
by this.
MyComponent() {
IModel foo = createSomeModel();
add(new Link() { onClick() {
// use foo model
}});
}
This model would not be detected by reflection, as far as I can tell.
So some models would be magically detached, others wouldn't. That might
lead to more confusion than just telling people "Well just detach it!".
So far we've been getting along with a simple rule: "Detach the model
yourself or pass it on to someone else." Easy to remember and works
reliably. This is what I've been teaching too.
I guess I'd have to see it in practice to make up my mind really. Is it
possible to offer it as an extension or something in wicketstuff, at
least for now?
Carl-Eric
www.wicketbuch.de
On Fri, 6 Apr 2012 09:42:42 -0700
Igor Vaynberg <[email protected]> wrote:
> i wrote a IDetachListener that automatically detaches any IModel
> fields found on components. is this something we would be interested
> in for core? its been running in production for a while without any
> noticeable overhead and its nice not to have to implemenet onDetach()
> all the time just to forward it to secondary models. the only downside
> is that once we introduce this feature we can never remote it because
> doing so will break code.
>
> thoughts?
>
> -igor