报错:
java.lang.NullPointerException
org.action.XsAction.deleteXs(XsAction.java:67)
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: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)xsAction.java
package org.action;
import java.util.*;
import org.model.*;
import org.service.*;
import com.opensymphony.xwork2.*;@SuppressWarnings("serial")
public class XsAction extends ActionSupport{
private Student2 st;
private XsService xsService;
private Collection<Student2> students;

public Student2 getStudent2(){
return st;
}
public void setStudent2(Student2 st){
this.st=st;
}

public XsService getXsService(){
return xsService;
}
public void setXsService(XsService xsService){
this.xsService=xsService;
}

public Collection<Student2> getStudents() {
return students;
} public void setStudents(Collection<Student2> students) {
this.students = students;
}

public String execute() throws Exception{
try{
setStudents(xsService.allStudents());
return SUCCESS;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return ERROR;
}
}

public String findXsView() throws Exception{
return SUCCESS;
}

@SuppressWarnings("unchecked")
public String findXs() throws Exception{
int xh=st.getStId();
if(xsService.find(xh)!=null){
return ERROR;
}
Student2 st1=xsService.find(xh);
Map request=(Map)ActionContext.getContext().get("request");
request.put("st", st1);
return SUCCESS;
}

public String deleteXsView() throws Exception{
return SUCCESS;
}

public String deleteXs() throws Exception{
int xh=st.getStId();
try {
xsService.delStudent(xh);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

public String update() throws Exception{
return SUCCESS;
}

@SuppressWarnings("unchecked")
public String updateXsView() throws Exception{
int xh=st.getStId();
Student2 xsinfo=xsService.find(xh);
Collection<Student2> xx=xsService.allStudents();
Map request=(Map)ActionContext.getContext().get("request");
request.put("xsinfo", xsinfo);
request.put("xx", xx);
return SUCCESS;
}

public String updateXs() throws Exception{
Student2 xs1=xsService.find(st.getStId());
xs1.setStName(st.getStName());
xs1.setStSex(st.getStSex());
xs1.setStAge(st.getStAge());
xs1.setStTel(st.getStTel());
xs1.setStDept(st.getStDept());
xs1.setStAddress(st.getStAddress());
Map request=(Map)ActionContext.getContext().get("request");
xsService.updateStudent(xs1);
return SUCCESS;
}

public String addXsView() throws Exception{
return SUCCESS;
}

public String addXs() throws Exception{
Student2 st1=new Student2();
int xh1=st.getStId();
if(xsService.find(xh1)!=null){
return ERROR;
}
st1.setStName(st.getStName());
st1.setStSex(st.getStSex());
st1.setStAge(st.getStAge());
st1.setStTel(st.getStTel());
st1.setStDept(st.getStDept());
st1.setStAddress(st.getStAddress());
xsService.addStudent(st1);
return SUCCESS;
}
 
}struts.xml相关配置
<action name="deleteXsView" class="xs" method="deleteXsView">
<result name="success">/deleteXsView.jsp</result>
</action>
<action name="deleteXs" class="xs" method="deleteXs">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>applicationContext.xml相关配置
<bean id="baseDao" class="org.dao.BaseDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDao" class="org.dao.imp.UserDaoimp" parent="baseDao"/>
<bean id="dlService" class="org.service.imp.DLServiceManage">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="dl" class="org.action.Dlaction">
<property name="dlService" ref="dlService"/>
</bean>
<bean id="stDao" class="org.dao.imp.StudentDaoimp" parent="baseDao"/>
<bean id="xsService" class="org.service.imp.XsServiceManage">
<property name="stDao" ref="stDao"></property>
</bean>
<bean id="xs" class="org.action.XsAction">
<property name="xsService" ref="xsService"></property>
</bean>

解决方案 »

  1.   

    看看配置的package对应上了么?还有spring-struts的jar包有没有引入
      

  2.   

    配置应该没问题。我这个目前可以成功运行xsinfo.action,也就是可以查看数据库里的全部学生信息。但是执行增删改查的时候,就都报了一样的空指针异常错误。
      

  3.   

    楼主可以打印下能不能获取到int xh=st.getStId(); 这个值,还有楼主都在方法里捕捉异常了,就没必要在抛给调用者了
      

  4.   

    获取不到,那是哪里出了问题啊?
    那空指针问题就是这个原因了,你看下getStId()方法的实现和sql语句是否正确,如果可以的话,你可以把代码贴上来
      

  5.   

    package org.model;/**
     * AbstractStudent2 entity provides the base persistence definition of the
     * Student2 entity. @author MyEclipse Persistence Tools
     */public abstract class AbstractStudent2 implements java.io.Serializable { // Fields private int stId;
    private String stName;
    private String stSex;
    private String stAge;
    private String stTel;
    private String stDept;
    private String stAddress; // Constructors /** default constructor */
    public AbstractStudent2() {
    } /** minimal constructor */
    public AbstractStudent2(int stId,String stName, String stSex, String stAge,
    String stDept, String stAddress) {
    this.stId = stId;
    this.stName = stName;
    this.stSex = stSex;
    this.stAge = stAge;
    this.stDept = stDept;
    this.stAddress = stAddress;
    } /** full constructor */
    public AbstractStudent2(int stId,String stName, String stSex, String stAge,
    String stTel, String stDept, String stAddress) {
    this.stId = stId;
    this.stName = stName;
    this.stSex = stSex;
    this.stAge = stAge;
    this.stTel = stTel;
    this.stDept = stDept;
    this.stAddress = stAddress;
    } // Property accessors public int getStId() {
    return this.stId;
    } public void setStId(int stId) {
    this.stId = stId;
    } public String getStName() {
    return this.stName;
    } public void setStName(String stName) {
    this.stName = stName;
    } public String getStSex() {
    return this.stSex;
    } public void setStSex(String stSex) {
    this.stSex = stSex;
    } public String getStAge() {
    return this.stAge;
    } public void setStAge(String stAge) {
    this.stAge = stAge;
    } public String getStTel() {
    return this.stTel;
    } public void setStTel(String stTel) {
    this.stTel = stTel;
    } public String getStDept() {
    return this.stDept;
    } public void setStDept(String stDept) {
    this.stDept = stDept;
    } public String getStAddress() {
    return this.stAddress;
    } public void setStAddress(String stAddress) {
    this.stAddress = stAddress;
    }}
      

  6.   

    package org.dao.imp;import java.util.*;import org.dao.*;
    import org.model.*;
    import org.hibernate.*;
    public class StudentDaoimp extends BaseDao implements StudentDao {

    //显示全部
    @Override
    public Collection<Student2> allStudents() {
    Session session=getSession();
    Transaction ts=session.beginTransaction();
    String hqlString="from Student2";
    Query query=session.createQuery(hqlString);
    @SuppressWarnings("unchecked")
    List<Student2> students=query.list();
    ts.commit();
    session.close();
    session=null;
    return students;
    }

        //查询
    public Student2 find(int id) {
    try{
    Session session=getSession();
    Transaction ts=session.beginTransaction();
    Query query=session.createQuery("from Student2 where id=?0");
    query.setInteger("0", id);
    Student2 stu=(Student2)query.uniqueResult();
    ts.commit();
    session.clear();
    return stu;
    }
    catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }    //添加
    public void addStudent(Student2 stu) {
    try {
    Session session=getSession();
    Transaction ts=session.beginTransaction();
    session.save(stu);
    ts.commit();
    session.close();

    catch (Exception e) {
    e.printStackTrace();
    }
    } //删除
    public void delStudent(int id) {
    try {
    Session session=getSession();
    Transaction ts=session.beginTransaction();
    Student2 stu=find(id);
    session.delete(stu);
    ts.commit();
    } catch (Exception e) {
    e.printStackTrace();
    }
    } //修改
    public void updateStudent(Student2 stu) {
    try {
    Session session=getSession();
    Transaction ts=session.beginTransaction();
    session.update(stu);
    ts.commit();
    session.close();

    catch (Exception e) {
    e.printStackTrace();
    }
    }}