Tutorial :wicket @SpringBean can not create bean



Question:

I have a project on Eclipse, Wicket, Spring, Hibernate. Every thing works normaly except : when I try

public class SortableContactDataProvider extends SortableDataProvider<User>  {      @SpringBean      private Service service;        public Iterator<User> iterator(int first, int count)      {          //SortParam sp = getSort();          return service.findAllUsers().subList(0, 15).iterator();      }  ...  

the service variable is null? In any another places when I use this constuction "service" is not null and working well. Please help me to solve this problem.


Solution:1

@SpringBean works only in any Subclass of Component.

You need to do the following in your Constructor

Wicket 1.4

  InjectorHolder.getInjector().inject(this);  

Wicket 1.5+

  org.apache.wicket.injection.Injector.get().inject(this);  

See 'generic IDataProvider implementation' @ http://stronglytypedblog.blogspot.com/2009/03/wicket-patterns-and-pitfalls-1.html

Enjoy


Solution:2

A bit more of context for those who are newbies to Wicket/Spring environment - as bert, pointed out, @SpringBean works only in any Subclass of Component so you'll need to drive the injection manually. This is a 2 step process:

Drive the injection in your class, something as:

public class SortableContactDataProvider extends SortableDataProvider<User>  {      @SpringBean      private Service service;        public SortableContactDataProvider(){          Injector.get().inject(this); // set up the injection      }        public Iterator<User> iterator(int first, int count)      {          return service.findAllUsers().subList(0, 15).iterator();      }  }  

And make sure the Injector is set up in Wicket application - something like:

public WicketApplication         @Override      protected void init() {          // make sure Spring injector is available and set up          getComponentInstantiationListeners().add(new SpringComponentInjector(this));      }  }  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »