InjectorHolder.getInjector().inject(this); //do this in dataprovider constructor
-- regards, Vineet Semwal On Wed, Sep 9, 2009 at 1:50 PM, Charles Moulliard <cmoulli...@gmail.com>wrote: > Hi, > > I have a strange problem that I can't explain. I don't know if this is a > bug > or a limitation. > > When I inject Spring dependency of a service inside a Wicket web page, > everything works fine but when I inject this dependency in a separate class > (in the following code example, the class RequestProvider is not longer > defined as internal class and moved to another package), I have a null > pointer exception at the following line : > > > 09:48:07,432 | ERROR | 3811...@qtp1-1 | RequestCycle > | > org.apache.wicket.RequestCycle 1521 | Error attaching this container for > rendering: [Page class = com.xpectis.x3s.fundbox.web.RequestPage, id = 0, > version = 0] > org.apache.wicket.WicketRuntimeException: Error attaching this container > for > rendering: [Page class = com.xpectis.x3s.fundbox.web.RequestPage, id = 0, > version = 0] > at > > org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1763) > at org.apache.wicket.Component.onBeforeRender(Component.java:3863) > at org.apache.wicket.Page.onBeforeRender(Page.java:1501) > at org.apache.wicket.Component.internalBeforeRender(Component.java:1061) > > ... > Caused by: java.lang.NullPointerException > at > > com.xpectis.x3s.fundbox.web.data.RequestProvider.size(RequestProvider.java:63) > at > > org.apache.wicket.markup.repeater.data.DataViewBase.internalGetItemCount(DataViewBase.java:140) > at > > org.apache.wicket.markup.repeater.AbstractPageableView.getItemCount(AbstractPageableView.java:252) > > Line 63 corresponds to : size = requestService.findRequest().size(); > > It seems that the requestService is not longer available when size method > is > called > > > Code which is working : > > public class RequestPage extends WebPage { > > @SpringBean > private RequestService requestService; > > .... > > private class RequestProvider implements IDataProvider { > > private List<Request> result = new ArrayList<Request>(); > private RequestFormModel requestFormModel; > private Request request; > > public RequestProvider() {} > > public RequestProvider(RequestFormModel requestFormModel) { > this.requestFormModel = requestFormModel; > } > > public Iterator iterator(int first, int count) { > if (requestFormModel != null) { > if (requestFormModel.getRequestId() != null) { > request = > requestService.getRequest(requestFormModel.getRequestId()); > result.add(request); > } else if (requestFormModel.getFileName() != null) { > result = > requestService.findRequestByFileName(requestFormModel.getFileName()); > } else { > result = requestService.findRequest(first, count); > } > } else { > result = requestService.findRequest(first, count); > } > > return result.iterator(); > > } > > public int size() { > int size = 0 ; > if (requestFormModel != null) { > if (requestFormModel.getRequestId() != null) { > request = > requestService.getRequest(requestFormModel.getRequestId()); > result.add(request); > size = result.size(); > } else if (requestFormModel.getFileName() != null) { > size = > > requestService.findRequestByFileName(requestFormModel.getFileName()).size(); > > } else { > size = requestService.findRequest().size(); > } > } else { > size = requestService.findRequest().size(); > } > return size; > } > > public IModel model(Object object) { > return new Model((Request) object); > } > > > Charles Moulliard > Senior Enterprise Architect > Apache Camel Committer > > ***************************** > blog : http://cmoulliard.blogspot.com >