这是异常HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error that prevented it from fulfilling this request.exceptionjava.lang.NullPointerException
com.action.RegisterDealAction.execute(RegisterDealAction.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.33 logs.这是spring配置<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> <context:annotation-config></context:annotation-config>
<context:component-scan base-package="com" />这是struts2配置<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" /> <package name="default" namespace="/" extends="struts-default"> <action name="user" class="com.action.RegisterDealAction">
<result name="success">
/registerSuccess.jsp
</result>
<result name="input">
/registerFail.jsp
</result>
</action>
</package>
<!-- Add packages here -->
</struts> 这是struts里的actionpackage com.action;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;import com.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.service.Inter_userMensage;@Component("user")
@Scope("properties")
public class RegisterDealAction extends ActionSupport {
private User user = new User();
private Inter_userMensage userMensager; @Override
public String execute() throws Exception {
// TODO Auto-generated method stub

if (userMensager.validate(user)) {
return SUCCESS;
} else {
return INPUT;
} } public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public Inter_userMensage getUserMensager() {
return userMensager;
} @Resource(name="userMensage")
public void setUserMensager(Inter_userMensage userMensager) { this.userMensager = userMensager;
System.out.println(userMensager);
}
}这是userMnesagepackage com.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;import com.dao.Inter_userDao;
import com.model.User;@Component("userMensage")
public class Impl_userMensage implements Inter_userMensage { private Inter_userDao userDao; @Override

public boolean validate(User user) {
return userDao.validate(user);
} public Inter_userDao getUserDao() {
return userDao;
} @Resource
public void setUserDao(Inter_userDao userDao) {
this.userDao = userDao;
}
}

解决方案 »

  1.   

    我struts2-spring-plugin-2.2.1.jar已经加了
    在整合前面 spring注入没任何问题 
    struts2里的action不用setter注入的话也没有问题
    但一整合  在action里面用注入  就会报空指针异常了
      

  2.   

    这是web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>register.jsp</welcome-file>
      </welcome-file-list>
     <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    <!-- default: /WEB-INF/applicationContext.xml -->
    </listener> <context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>  -->
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
      <filter>
       <filter-name>struts2</filter-name>
       <filter-class>
       org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
       </filter-class>
      </filter>
      <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>*.action</url-pattern>
      </filter-mapping></web-app>
      

  3.   

    既然用spring注入了,干嘛还要User user = new User();去掉 = new User()
      

  4.   


    嗯,有道理,我去试试,看看行不行
    不过我这个user就是用于接受提交的表单数据的  不是通过spring注入的
      

  5.   

    按你的方法弄了,还是空指针
    第一次整合spring和struts2  想了几下流程 没有发现什么纰漏
    但就是注入不成功  有人帮忙看看么  
    从上午到现在就一直在搞这个问题
      

  6.   

    哦 是我命名不规范
    @Component("user")本来想写@Component("RegisterDealAction")的 可是觉得太长了 就直接写@Component("user")了这和下面的那个user成员变量没任何关系的。
      

  7.   

    而且我struts2配置里面action的name也是“user”
    照道理来说没有应该可以注入成功的吧?
      

  8.   

    你是想把struts交给spring管理?在struts.xml里加上<constant name="struts2.ObjectFactory" value="Spring"/>
      

  9.   

    谢谢了
    可我还有一个问题搞不大明白
    在网上查了<constant name="struts2.ObjectFactory" value="Spring"/>这句话
    网上是这么说的 如果不用struts2-spring-plugin.jar 那么就要加上这句话可我已经用了 struts2-spring-plugin.jar  为什么还要加上<constant name="struts2.ObjectFactory" value="Spring"/>这句话才有用呢?
      

  10.   

    哦 可是我把struts2-spring-plugin.jar去掉  加上<constant name="struts2.ObjectFactory" value="Spring"/>这句话 照样运行无碍啊