Okay, this question might actually be more related to Spring, but I'm completely lost here, and my question on Spring forums usually don't get any replies, so I hope Wicket community might help as it usually does.
I'm using JCR, and have a RepositoryDao bean configured in applicationContext.xml. RepositoryDao has a "template" property which points to an instance of JcrTemplate in applicationContext.xml, all repository access is performed through that template. I have an AccessPage which has a RepositoryDao injected via @SpringBean. There is an inner class Form on that page, it has a default submit button and three submit buttons that skip default processing and perform their own operations onSubmit(). Both default button and skip-default-processing buttons use the same repositoryDao property of AccessPage to perform certain operations on repository. I noticed that when I actually open that AccessPage, there's a new RepositoryDao object created, and it's "template" property is null. When I press any of those non-default submit buttons of the form, everything works fine. But on default button onSubmit(), I see that there's yet another insance of RepositoryDao created, and it's "template" is also null, which leads to NullPointerException. I assumed that beans configured in applicationContext.xml are actually singletons, so there won't be any new instances of such nodes upon pages-with-injections instantiation. Regardless of whether that assumption is correct/incorrect/my-god-rtfm, I still won't understand why default submit button reaction is NPE as it uses same partnershipDao property of AccessPage. Could someone please elaborate some internal differences of the annotation-based approach as opposed to storing DAOs in Application object. In the latter case it's quite clear that there's a single instance of RepositoryDao as a property of MyApplication which is pulled on ((MyApplication) Application.get()).getRepositoryDao(). Thanks. -- sp
