初学SH框架,新建了一个项目:其中action、actionform、DAO都放在src下的同一个包内,页面都放在webroot下:有代码如下:
实体类:Teache人:定义属性和get/set方法,除日期外的字段都是String类型,ID定义为int类型,生成策略native其中addTeacher.jsp
  <form id="form1" name="form1" method="post" action="addTeacher.do">//-------请留意配置是否正确//------------------------------------action中代码如下:-----------------------------
public class AddTeacherAction extends Action {


@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

Teacher teacher=new Teacher();
TeacherDAO teacherDAO=new TeacherDAO();
AddTeacherForm teacherForm=(AddTeacherForm)form;
         //将form中的值赋值给实体类
                 teacher.setTeacherName(teacherForm.getTeacherName());
                //*************断点执行到上面这一句报错:class java.lang.NullPointerException*****************
               //-------系列的赋值语句后,调用TeacherDAO类的addTeacher()方法,返回值为布尔类型              
                   if(teacherDAO.addTeacher(teacher)){   
 request.setAttribute("teacher", teacherForm);
 return mapping.findForward("success");
 
}
else  return mapping.findForward("error");
}


//-----------------struts-config.xml配置如下------------------------
<form-beans>

<form-bean name="addTeacherForm" type="com.scau.test.AddTeacherForm"/>

</form-beans>

<action-mappings>

<action path="/addTeacher"
type="com.scau.test.AddTeacherAction"
name="addTeacherForm"
scope="request"
validate="false">
<forward name="success" path="/success.jsp"/>
<forward name="error" path="/error.jsp"/>
</action>
请问各位高手:问题出在哪了,teacher类好像是空值,为什么会这样,如何解决啊!急!求救!

解决方案 »

  1.   

    public class NullPointerException
    extends RuntimeException
    当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。 
    访问或修改 null 对象的字段。 
    将 null 作为一个数组,获得其长度。 
    将 null 作为一个数组,访问或修改其时间片。 
    将 null 作为 Throwable 值抛出。 
    应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。 
    根据报错信息提示你的行数去看
      

  2.   

    我记得jsp中是要用struts标签的
    html:form
      

  3.   

    改用html:form标签。你这里指定了id,name与配置文件中不一致,就这样问题来了
      

  4.   

    空指针 异常,你看看 那个值是null了!
      

  5.   

    TeacherDAO teacherDAO=new TeacherDAO(); 
    AddTeacherForm teacherForm=(AddTeacherForm)form; 
            //将form中的值赋值给实体类 
                    teacher.setTeacherName(teacherForm.getTeacherName());楼主请注意你的代码。
        你在set的时候同时get 你叫程序怎么执行呀。。
         你可以这么写
        teacher.setTeacherName("韩梅梅");
        String tName=teacher.getTeacherName();
         //输出韩梅梅。。
      

  6.   

    teacherName为属性。应该不能同时get和set的。。
      

  7.   

    TeacherDAO teacherDAO=new TeacherDAO(); 
    AddTeacherForm teacherForm=(AddTeacherForm)form; 
            //将form中的值赋值给实体类 
                    teacher.setTeacherName(teacherForm.getTeacherName()); 
    你确定你jsp中的控件的name一定要和actionform里的属性一样啊,否则teacherForm取不到值,teacherForm.getTeacherName()是Null,故会报空指针异常
      

  8.   

    我做过断点了,teacherForm是有值的,但是执行
    teacher.setTeacherName(teacherForm.getTeacherName)这一句后就报错了:其中teacher是我定义的实体类Teacher的一个对象,teacher.setTeacherName(teacherForm.getTeacherName)就是把form的数据赋值给teacher实体对象啊,这样有问题吗?另外我确定我的页面、form和实体类的属性名都是一致的。问题究竟出现在那里啊
      

  9.   

    其中addTeacher.jsp页面代码如下
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>教师基本信息录入</title>
    <link rel="stylesheet" href="2col_leftNav.css" type="text/css" />
    <style type="text/css">
    </style>
    </head>
    <body><div id="content">
      <h2 id="pageName">教师基本信息:</h2>
      <form id="form1" name="form1" method="post" action="../humanAffairsSubSystem/action/addTeacher.do">
        <p>
    <label>&nbsp;&nbsp;工号 &nbsp;&nbsp;
          <input type="text" name="teacherNum" />
        </label>
    </p>
     <div id="Layer1"></div>
     <p>
    <label>&nbsp;&nbsp;姓名&nbsp;&nbsp;
          <input type="text" name="teacherName" />
        </label>
    </p>
    <p>
    <label>&nbsp;&nbsp;密码&nbsp;&nbsp;
          <input type="text" name="pwd" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;状态&nbsp;&nbsp;
          <input type="text" name="teacherStatus" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;性别&nbsp;&nbsp;
          <input type="text" name="gender" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;出生日期&nbsp;&nbsp;
          <input type="text" name="birthday" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;身份证号码&nbsp;&nbsp;
          <input type="text" name="uid" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;学历&nbsp;&nbsp;
          <input type="text" name="education" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;部门&nbsp;&nbsp;
          <input type="text" name="department" />
        </label>
        </p>
     <p>
    <label>&nbsp;&nbsp;职务&nbsp;&nbsp;
          <input type="text" name="job" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;职称&nbsp;&nbsp;
          <input type="text" name="title" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;入职时间&nbsp;&nbsp;
          <input type="text" name="beginTime" />
        </label>
    </p>

     <p>
    <label>&nbsp;&nbsp;手机&nbsp;&nbsp;
          <input type="text" name="phoneNum" />
        </label>
    </p>
     <p>
    <label>&nbsp;&nbsp;电子邮件&nbsp;&nbsp;
          <input type="text" name="email" />
        </label>
    </p>
    <p>
    <label>&nbsp;&nbsp;专业技能&nbsp;&nbsp;
          <input type="text" name="skill" />
        </label>
    </p>
    <p>
    <label>&nbsp;&nbsp;照片&nbsp;&nbsp;
          <input type="text" name="photo" />
        </label>
    </p>
    <p>
    <label>&nbsp;&nbsp;附件&nbsp;&nbsp; 
          <input type="text" name="attachment" />
        </label>
    </p>

    <p>
          <label>
          <input type="submit" name="Submit" value="确认" />
          </label>
      &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
      <label>
          <input type="submit" name="Submit" value="重置" />
          </label>
      
    </p>  </form>
    </div>
    </body>
    </html>
      

  10.   


    做过断点了,teacherForm是有值的
    简单的问一下。。
       有值了,你还set干嘛呢?直接用就好了