login.jsp <s:form action="register" method="post">
  <s:textfield name="user.username" label="用户名"/>
  <s:password name="user.password" label="密码"/>
  <s:submit value="注册"/>
  <s:reset value="重填"/>
  </s:form>struts.xml<package name="default" extends="struts-default">
<action name="register" class="action.RegisterAction">
<result name="success">/success.jsp</result>
</action>
ApplicationContext.xml<bean id="userDao" class="Realized.UserDaoHibernate" />
<bean id="User" class="bean.User"/><bean id="registerAction" class="action.RegisterAction"><property name="user" ref="User"/>
<property name="userDao" ref="userDao"/>
</bean>
RegisterAction.javapackage action;import javax.annotation.Resource;import bean.User;import com.opensymphony.xwork2.ActionSupport;import dao.UserDao;public class RegisterAction extends ActionSupport {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private UserDao userDao;
    public UserDao getUserDao() {
return userDao;
}
    @Resource
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
private User user;
public User getUser() {
return user;
}
@Resource
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception
{
   userDao.saveUser(user);
   return SUCCESS;
}
}

解决方案 »

  1.   

    private User user;
    把这个属性及相关的方法从Action中删除掉。
      

  2.   

    补充:错误是
    java.lang.NullPointerException
    action.RegisterAction.execute(RegisterAction.java:34)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    web.xml
     <filter>
       <filter-name>struts2</filter-name>
       <filter-class>
       org.apache.struts2.dispatcher.FilterDispatcher
       </filter-class>
      </filter>
      <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
     
      <listener>
      <listener-class>
      org.springframework.web.context.ContextLoaderListener
      </listener-class>
      </listener>
      

  3.   

    弱弱问一下 如果删掉user 那么userDao.saveUser(user) 这个user从哪来
      

  4.   

    你把 @Resource
        public void setUser(User user) {
            this.user = user;
        }
    这的 @Resource去掉呢
      

  5.   

      <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    改成
      <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>*.action</url-pattern>
      </filter-mapping>
    试一下吧,好像被拦截器拦截了
      

  6.   

    去掉@Resource没有反应
    然后改成*.action报错 在打开login.jsp时 The Struts dispatcher cannot be found. 
      

  7.   

        @Resource
        public void setUser(User user) {
            this.user = user;
        }
    把@Resource去掉,你的user对象是要从页面上获得,而不是用@Resource标签从spring依赖注入
      

  8.   

    从配置上看不到什么错。感觉更像是少了什么JAR包
      

  9.   

    另外你的spring配置文件修改为
    <bean id="userDao" class="Realized.UserDaoHibernate" /><bean id="registerAction" class="action.RegisterAction" scope="prototype">
    <property name="userDao" ref="userDao"/>
    </bean>
      

  10.   

    我在奇怪这样写为什么IDE没给你错误提示,userDao.saveUser(user);    变量要先初始化再使用,给private User user 初始化为:private User user = null试试;
      

  11.   

    你用了ApplicationContext ctx=new ClassPathXmlApplicationContext("bean文件路径");
    来加载xml文件了么
      

  12.   

        public String execute() throws Exception
        {
           ApplicationContext ctx=new ClassPathXmlApplicationContext("bean文件路径");
           this.userDao = ctx.getBean("userDao");
           userDao.saveUser();
           return SUCCESS;
        }
    这样试试呢?
      

  13.   

    你有打开注解么??如果没有打开的话那个@Resource是没用的。
      

  14.   

    是否缺少 struts2 的一个插件, struts2-spring-plugin-x-x-x.jar
    此插件用来整合Spring 与 Struts2
      

  15.   

    修改一下这里就可以了:
    <package name="default" extends="struts-default">
    <action name="register" class="registerAction">
    <result name="success">/success.jsp</result>
    </action>
    这样的做法是你直接应用了spring的代理。
      

  16.   


    //个人认为应该把这两个注解都去掉,应为你已经在xml文件中注入了,就不需要了,只需要有set方法就可以
    @Resource
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        private User user;
        public User getUser() {
            return user;
        }
        @Resource
        public void setUser(User user) {
            this.user = user;
        }
      

  17.   

    建议断点调试一下,这样的话可以知道那个地方是Null
      

  18.   

    你这个明显是报的空指针 
        public String execute() throws Exception
        {
           userDao.saveUser(user);
           return SUCCESS;
        }userDao.saveUser(user);
    检查这一行 
    按报告来说 感觉是userDao的控制正 也不排除 user的空指针 
    实体还能注意给action  这个没用这样用过 运用感觉不是那么灵活
      

  19.   

    一种情况,你spring没能创建User对象;
    二种直接new :如下 
    public void setUser(User user) {
            this.user = new User();
        }
    在setUser(User user )中new User();
      

  20.   

    同上楼,遇到这个问题,网上说的问题都比较多,最多的是把action类型改成委托类型,不过感觉要改的地方挺多的。