applicationContext.xml中配置了:
<bean id="objectDao" class="com.wy.dao.ObjectDao">
<property name="sessionFactory">
<ref bean="localSessionFactory" />
</property>
</bean>
       <bean id="passwordEncoder" class="com.wy.sys.PasswordEncoder" singleton="true">
</bean>
         <bean name="/manager" class="com.wy.action.ManagerAction"
singleton="false">
<property name="objectDao">
<ref bean="objectDao" />
</property>
<property name="passwordEncoder">
<ref bean="passwordEncoder" />
</property>
</bean>passwordEncoder是我用来MD5加密用的类,想把passwordEncoder注入到manager中,在ManagerAction已经设置了
private PasswordEncoder passwordEncoder; public PasswordEncoder getPasswordEncoder() {
return passwordEncoder;
} public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
但是在执行到passwordEncoder.MD5(managerForm.getPassword());系统报:
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.wy.action.ManagerAction.checkManager(ManagerAction.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)求解

解决方案 »

  1.   

    报错在STRUTS ACTION层, 请设置断点……
    具体我也不清楚哈, 不好意思
      

  2.   

    你的passwordEncoder怎么注入的是它本身啊
    我觉得应该注入SessionFactory
    方法一:
    <property name="passwordEncoder">
    <ref bean="passwordEncoder" />//把这句话改成<ref bean="objectDao" />
    </property>
    方法二:
    <property name="passwordEncoder">
    property name="sessionFactory">
    <ref bean="localSessionFactory" />
    </property>
    </property>
      

  3.   

    ManageForm中有passwordEncoder属性,我想将其注入
    private PasswordEncoder passwordEncoder;
      

  4.   


    以下是tomcat启动输出信息
    2011-5-11 11:03:08 org.apache.catalina.core.AprLifecycleListener init
    信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_10\bin;C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin
    2011-5-11 11:03:08 org.apache.coyote.http11.Http11Protocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2011-5-11 11:03:08 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 1688 ms
    2011-5-11 11:03:08 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2011-5-11 11:03:08 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/6.0.10
    2011-5-11 11:03:10 org.apache.catalina.loader.WebappClassLoader validateJarFile
    信息: validateJarFile(C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\OASys\WEB-INF\lib\j2ee13.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    log4j:ERROR Could not find value for key log4j.appender.stdout.layout
    2011-5-11 11:03:15 org.apache.catalina.core.ApplicationContext log
    信息: Initializing WebApplicationContext for Struts ActionServlet 'action', module ''
    log4j:ERROR No layout set for the appender named [stdout].
    2011-5-11 11:03:23 org.apache.catalina.core.ApplicationContext log
    信息: Loading Spring root WebApplicationContext
    2011-5-11 11:03:23 org.apache.coyote.http11.Http11Protocol start
    信息: Starting Coyote HTTP/1.1 on http-8080
    2011-5-11 11:03:23 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2011-5-11 11:03:23 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/47  config=null
    2011-5-11 11:03:23 org.apache.catalina.startup.Catalina start
    信息: Server startup in 14984 ms
      

  5.   

    managerForm  有可能是这个的null错误
      

  6.   

    managerForm.getPassword()取到值了吗?