什么空指针
action对象的吗

解决方案 »

  1.   


    对,从jsp页面传递到action的对象是空的!
      

  2.   


    java.lang.NullPointerException
    at com.rzq.service.impl.UserinfoServiceImpl.save(UserinfoServiceImpl.java:51)
    at com.rzq.action.userinfo.SaveUserinfoAction.execute(SaveUserinfoAction.java:43)
    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 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)
      

  3.   

    你把jsp页面的userinfo改成user,或者把set方法改下。或者你干脆不提供set方法把属性改成public的。
      

  4.   

     at com.rzq.service.impl.UserinfoServiceImpl.save(UserinfoServiceImpl.java:51)
    把这代码附近贴出来看看啊
      

  5.   

    你的userinfo对应的set,get方法咋不一致呢?
      

  6.   

    Userinfo 类中,对它所有的属性提供get set方法
      

  7.   

    应该是getUserinfo() ???
    怎么回事getUser()????
      

  8.   

    setter getter你用eclipse提供的自动生成功能就不会有错
      

  9.   

    那就是jsp页面的值没传到action去么   可以在action中用打印的方法试一下  看哪个值没取到    一般没取到   都是忘了写set,get方法 
      

  10.   

    实现ModenDriven接口接收参数啊!
      

  11.   

    1 检查set/get方法
    2 注意要引用parameter拦截器(默认引入,如果在action里显示定义拦截器,必须显示引入它)
      

  12.   

    域对象的get和set生成错了,楼主或者可以用模型驱动实现。
      

  13.   

    你userinfo的get、set方法有问题吧
      

  14.   

    你action中的userinfo的setter方法是setUser你页面应该以user.userId而不是userinfo.userId;
    struts2是根据你的setter方法来注入对象的不是根据属性名
      

  15.   

    userinfo没有相应的get、set方法
      

  16.   


    关键是我的表就是userinfo,我的实体类名也是Userinfo,我换成user干吗?
      

  17.   


    package com.rzq.bean;/**
     * Userinfo entity.
     * 
     * @author MyEclipse Persistence Tools
     */public class Userinfo implements java.io.Serializable { // Fields private Integer id;
    private Groupinfo groupinfo;
    private Integer userId;
    private String userName;
    private String userPassword;
    private Integer userSex; // Constructors /** default constructor */
    public Userinfo() {
    } /** full constructor */
    public Userinfo(Groupinfo groupinfo, Integer userId, String userName,
    String userPassword, Integer userSex) {
    this.groupinfo = groupinfo;
    this.userId = userId;
    this.userName = userName;
    this.userPassword = userPassword;
    this.userSex = userSex;
    } // Property accessors public Integer getId() {
    return this.id;
    } public void setId(Integer id) {
    this.id = id;
    } public Groupinfo getGroupinfo() {
    return this.groupinfo;
    } public void setGroupinfo(Groupinfo groupinfo) {
    this.groupinfo = groupinfo;
    } public Integer getUserId() {
    return this.userId;
    } public void setUserId(Integer userId) {
    this.userId = userId;
    } public String getUserName() {
    return this.userName;
    } public void setUserName(String userName) {
    this.userName = userName;
    } public String getUserPassword() {
    return this.userPassword;
    } public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
    } public Integer getUserSex() {
    return this.userSex;
    } public void setUserSex(Integer userSex) {
    this.userSex = userSex;
    }}
    这个就是我的userinfo实体类,get和set都有的!
      

  18.   

    你的action定义了属性 private Userinfo userinfo;那么对应的set和get方法应该是这样的:
    /**
     * @return the userinfo
     */
    public String getUserinfo() {
    return userinfo;
    }
    /**
     * @param userinfo the userinfo to set
     */
    public void setUserinfo(String userinfo) {
    this.userinfo = userinfo;
    }
    楼主这个没看出来?
      

  19.   

    请把String改为Userinfo,上面是举个例子。
      

  20.   

    的确是getter和setter方法有问题,至少这是问题 的一部分原因。lz可能改过类变量然后忘记引入getter和setter方法了
      

  21.   

    是哎 ,action中的set get方法有问题,需要重新生成下。