When I was reading the discussion about session.dirty
(http://www.nabble.com/What-is-session.dirty%28%29-for--td17021032.html#a17021032)
on the users list, I came up with an idea. Perhaps we could come up
with a set of reusable AspectJ aspects for these sort of cases. For
this particular case, we'd introduce an annotation like @SessionData
or something and create an aspect that says "anytime a setter is
called on a class with the @SessionData annotation, we call
session.dirty()". Now, this would be a separate subproject of Wicket
so that it's not required or anything. Then, if folks wanted to, they
could weave that into their own classes to make sure that they're
taking care of their session data properly (in a cluster). I can
imagine that we might be able to do the on-before-first-render stuff
with aspects, too. Again, the aspects would be optional, kind of like
how the spring-aspects (for @Configurable and @Transactional) are
optional, but very useful.