Spring+Hibernate测试的时候无任何错误但是集成Struts2之后
[web] 2010-05-23 11:21:46,968 - com.opensymphony.xwork2.validator.ActionValidatorManagerFactory -21281 [http-8080-Processor25] INFO  com.opensymphony.xwork2.validator.ActionValidatorManagerFactory  - Detected AnnotationActionValidatorManager, initializing it...
java.lang.NullPointerException
 at com.charity.web.action.user.UserAction.addUserLogin(UserAction.java:37)
 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:585)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
 at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
 at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
 at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
 at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
 at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184).... applicationContext-dao.xml文件<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName">
     <bean name="userDao" class="com.charity.web.dao.user.impl.UserDaoImpl"/> applicationContext-service.xml文件<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName">
         
   <bean name="userService" class="com.charity.web.service.user.impl.UserServiceImpl"/>  Struts2 <package name="web-user" extends="web-manager-default" namespace="/user">
  <action name="toLogin">
   <result name="success">/web/user/user.jsp</result>
   <result name="error">/web/user/user.jsp</result>
  </action>
  
  <action name="addUserLogin" class="com.charity.web.action.user.UserAction" method="addUserLogin">
   <result name="success">/web/user/user.jsp</result>
   <result name="error">/web/user/user.jsp</result>
  </action> UserAction类:package com.charity.web.action.user;import java.util.Date;import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.charity.web.action.BaseAction;
import com.charity.web.dataobject.user.User;
import com.charity.web.service.user.IUserService;public class UserAction extends BaseAction{
 
 private IUserService userService;
 private User user = new User();
 public User getUser() {
  return user;
 } public void setUser(User user) {
  this.user = user;
 }
 
 public IUserService getUserService() {
  return userService;
 } public void setUserService(IUserService userService) {
  this.userService = userService;
 }
 /**
  * 用户注册
  * @return
  */
 public String addUserLogin()throws Exception{
  try{
   userService.addUser(user);
   return SUCCESS;
  }catch(Exception e){
   e.printStackTrace();
  }
  return ERROR;
  
  
 }
// public static void main(String[] args) {
//  BeanFactory bean = new ClassPathXmlApplicationContext("com/charity/web/config/spring/applicationContext-*.xml");
//  IUserService userService = (IUserService) bean.getBean("userService");
//  User user1=new User();
//  user1.setState(0);
//  user1.setCtime(new Date());
//  user1.setUsername("admin");
//  user1.setPassword("11111");
//  try {
//   userService.addUser(user1);
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
// }
}

解决方案 »

  1.   

    那UserAction中 IUserService userSerivce get set根本得不到Spring IOC容器中 userService的定义  是不是少了包还是什么原因.....配置应该没问题的
      

  2.   


    java.lang.NullPointerException
     at com.charity.web.action.user.UserAction.addUserLogin(UserAction.java:37)空指针,你给我看看错误所定的那行。
    ----
    代码也不排版,好难看……
      

  3.   

    public String addUserLogin()throws Exception{
    try{
    //System.out.println(user.getUsername());
    //System.out.println(userService);
    userService.addUser(user);
    return SUCCESS;
    }catch(Exception e){
    e.printStackTrace();
    }
    return ERROR;


    }
      

  4.   


    package com.charity.web.action.user;import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;import com.charity.web.action.BaseAction;
    import com.charity.web.dao.user.IUserDAO;
    import com.charity.web.dataobject.user.User;
    import com.charity.web.service.user.IUserService;public class UserAction extends BaseAction{

    private IUserService userService;
    private User user = new User();
    public User getUser() {
    return user;
    } public void setUser(User user) {
    this.user = user;
    }

    public IUserService getUserService() {
    return userService;
    } public void setUserService(IUserService userService) {
    this.userService = userService;
    }
    /**
     * 用户注册
     * @return
     */
    public String addUserLogin()throws Exception{
    try{
    //System.out.println(user.getUsername());
    //System.out.println(userService);
    userService.addUser(user);
    return SUCCESS;
    }catch(Exception e){
    e.printStackTrace();
    }
    return ERROR;


    }
    // public static void main(String[] args) {
    // BeanFactory bean = new ClassPathXmlApplicationContext("com/charity/web/config/spring/applicationContext-*.xml");
    // IUserService userService = (IUserService) bean.getBean("userService");
    // User user1=new User();
    // user1.setState(0);
    // user1.setCtime(new Date());
    // user1.setUsername("admin");
    // user1.setPassword("11111");
    // try {
    // userService.addUser(user1);
    // } catch (Exception e) {
    // e.printStackTrace();
    // }
    // }}
      

  5.   

    你的配置错了. 你只是把service给了Spring容器. 你的action并没有托管给Spring容器.所以你的service根本就没有办法实例化. Spring和Struts集成还需要一个插件的. 这个插件在Struts提供的jar包里面有.
      

  6.   

    zz250121244 非常感谢你的帮助
    但是我配置了struts.properties中已经进行了托管,并且Struts2-spring-plugin.jar已经添加了
    还是没用
    下面是我struts.properties中的配置
    #Created by JInto - www.guh-software.de
    #Thu Nov 20 13:48:01 CST 2008
    struts.action.extension=do
    struts.configuration.xml.reload=true
    #struts.custom.i18n.resources=resource/CommonResource
    struts.devMode=true
    struts.dispatcher.parametersWorkaround=false
    struts.enable.SlashesInActionNames=false
    #struts.freeer.wrapper.altMap=true
    struts.i18n.encoding=GBK
    struts.i18n.reload=false
    struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper
    struts.multipart.maxSize=5242880
    struts.multipart.parser=jakarta
    #struts.multipart.saveDir=
    struts.objectFactory=spring
    struts.objectFactory.spring.autoWire=name
    struts.objectFactory.spring.useClassCache=true
    struts.serve.static=true
    struts.serve.static.browserCache=true
    struts.tag.altSyntax=true
    struts.date.format=yyyy-MM-dd
    #struts.ui.templateSuffix=ftl
    #struts.freeer.templatesCache=true
    #struts.ui.theme=xhtml
    #struts.url.http.port=8080
    #struts.url.https.port=8443
    #struts.xslt.nocache=false
      

  7.   

    问题用死办法解决了
    我想它不能自动装配  直接给它手动装配了   OK
    各位帮忙看看自动装配到底什么原因,为什么不能自动装配
    有共同爱好的+我QQ290091072
     共同学习,交流
      

  8.   

    像这种情况,肯定是spring的配置文件出了问题,好好检查一下你的注入情况.
      

  9.   

    兄弟 你的spring整合struts2的注入到哪里去了
    没有注入你的对象存在?
    不太可能吧
    spring再强也不会主动注入呀
      

  10.   

    LZ,你将<bean name="userService" class="com.charity.web.service.user.impl.UserServiceImpl"/>中的name改为id试下
    <bean id="userService" class="com.charity.web.service.user.impl.UserServiceImpl"/>
      

  11.   

    各位兄弟谢谢了,但是我配置成
              <bean name="addUserLogin" class="com.charity.web.action.user.UserAction">
                <property name="userService">
                <ref bean="userService"/>
               </property>
               </bean>
    这样也没用,怎么已经注入了,还是不行
      

  12.   

    Spring的注入我喜欢用Annotation  非常简单.  至于用xml方式  我认为是有解决方案的.
     <bean name="addUserLogin" class="com.charity.web.action.user.UserAction"></bean>
    我认为class="com.charity.web.action.user.UserAction" 这一句上并没有把这个action交给Spring初始化, 而是给了Struts和Spring的插件初始化.
      

  13.   

    呵呵  各位兄弟谢谢帮忙了 
    问题解决了 是web.xml文件 那classpath 路径错了   汗