2013-05-18 38 views
0

今天我有一個真氣問題如下:Spring的管理對象始終爲空。檢票框架

我有一個基於wicket的應用程序,我使用spring來管理應用程序連接到數據庫的對象,在過去這對我來說工作得很好。

我在eclipse中使用內置jetty服務器來運行應用程序,我注意到當我在類中的數據源方法中放置一個斷點時,在啓動時,setter似乎被調用並且數據源對象具有我想要的數據。

但是,當我去使用彈簧已經將值注入到它的數據源對象的對象時,它返回的對象爲null。

代碼片斷如下:

聲明的類要被春季管理:

public class HomePage extends WebPage { 

@SpringBean(name = "userImpl") 
private UserImpl userImp; 

/** 
* 
*/ 

我在哪裏調用這個對象:

protected void onSubmit() { 
      super.onSubmit(); 

      try { 
       Person returnedUser = userImp.findUser(model.getUsername(), 
         model.getPassword()); 
       setResponsePage(StudentPage.class); 
       returnedUser.getEmail(); 
      } catch (Exception e) { 

我的應用程序上下文文件:

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<!-- the DataSource (parameterized for configuration via a PropertyPlaceHolderConfigurer) --> 
<bean id="datasource" destroy-method="close" 
    class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306" /> 
    <property name="username" value="root" /> 
    <property name="password" value="admin" /> 
</bean> 

<bean id="userImp" class="com.bascombe.persistance.UserImpl"> 
    <property name="datasource" ref="datasource" /> 
</bean> 

我的web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd」 版本= 「2.5」>

<display-name>FinalYearProject</display-name> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationContext.xml</param-value> 
</context-param> 

<filter> 
    <filter-name>wicket.FinalYearProject</filter-name> 
    <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> 
    <init-param> 
     <param-name>applicationClassName</param-name> 
     <param-value>com.bascombe.pages.WicketApplication</param-value> 
    </init-param> 
</filter> 

<filter> 
    <filter-name>springRequestContextFilter</filter-name> 
    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>wicket.FinalYearProject</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

上的形式的提交的結果是一個零指示字例外如下:

java.lang.NullPointerException 
at com.bascombe.pages.HomePage$1.onSubmit(HomePage.java:37) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1246) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1240) 
at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274) 
at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:245) 
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1239) 
at org.apache.wicket.markup.html.form.Form.process(Form.java:921) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:767) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:700) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) 
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226) 
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:840) 
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254) 
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211) 
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282) 
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:244) 
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) 
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:267) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 
at org.eclipse.jetty.server.Server.handle(Server.java:348) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452) 
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:894) 
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:948) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:851) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) 
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 
at java.lang.Thread.run(Unknown Source) 
java.lang.NullPointerException 
at com.bascombe.pages.HomePage$1.onSubmit(HomePage.java:37) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1246) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1240) 
at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274) 
at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:245) 
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1239) 
at org.apache.wicket.markup.html.form.Form.process(Form.java:921) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:767) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:700) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) 
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226) 
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:840) 
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254) 
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211) 
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282) 
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:244) 
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) 
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:267) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 
at org.eclipse.jetty.server.Server.handle(Server.java:348) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452) 
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:894) 
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:948) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:851) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) 
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 
at java.lang.Thread.run(Unknown Source) 
java.lang.NullPointerException 
at com.bascombe.pages.HomePage$1.onSubmit(HomePage.java:37) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1246) 
at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1240) 
at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274) 
at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:245) 
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1239) 
at org.apache.wicket.markup.html.form.Form.process(Form.java:921) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:767) 
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:700) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) 
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240) 
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226) 
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:840) 
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254) 
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211) 
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282) 
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:244) 
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) 
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:267) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 
at org.eclipse.jetty.server.Server.handle(Server.java:348) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452) 
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:894) 
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:948) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:851) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) 
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 
at java.lang.Thread.run(Unknown Source) 

調試後,我發現我調用findUser的對象爲null。

任何想法?

+0

您的應用程序類何況'SpringComponentInjector'在其init方法? –

+0

在Wicket中你引用了名爲UserImpl的bean,而在你的xml中你有userImp –

回答

0

如果bean id「userImp」在您的問題中只是一個錯字,那麼:您還沒有激活註釋配置,因此您的註釋@SpringBean不起作用。

您必須添加到您的應用程序上下文:

<context:annotation-config/>