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
>

Reply via email to