初学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类好像是空值,为什么会这样,如何解决啊!急!求救!
实体类: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类好像是空值,为什么会这样,如何解决啊!急!求救!
extends RuntimeException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。
根据报错信息提示你的行数去看
html:form
AddTeacherForm teacherForm=(AddTeacherForm)form;
//将form中的值赋值给实体类
teacher.setTeacherName(teacherForm.getTeacherName());楼主请注意你的代码。
你在set的时候同时get 你叫程序怎么执行呀。。
你可以这么写
teacher.setTeacherName("韩梅梅");
String tName=teacher.getTeacherName();
//输出韩梅梅。。
AddTeacherForm teacherForm=(AddTeacherForm)form;
//将form中的值赋值给实体类
teacher.setTeacherName(teacherForm.getTeacherName());
你确定你jsp中的控件的name一定要和actionform里的属性一样啊,否则teacherForm取不到值,teacherForm.getTeacherName()是Null,故会报空指针异常
teacher.setTeacherName(teacherForm.getTeacherName)这一句后就报错了:其中teacher是我定义的实体类Teacher的一个对象,teacher.setTeacherName(teacherForm.getTeacherName)就是把form的数据赋值给teacher实体对象啊,这样有问题吗?另外我确定我的页面、form和实体类的属性名都是一致的。问题究竟出现在那里啊
<%@ 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> 工号
<input type="text" name="teacherNum" />
</label>
</p>
<div id="Layer1"></div>
<p>
<label> 姓名
<input type="text" name="teacherName" />
</label>
</p>
<p>
<label> 密码
<input type="text" name="pwd" />
</label>
</p>
<p>
<label> 状态
<input type="text" name="teacherStatus" />
</label>
</p>
<p>
<label> 性别
<input type="text" name="gender" />
</label>
</p>
<p>
<label> 出生日期
<input type="text" name="birthday" />
</label>
</p>
<p>
<label> 身份证号码
<input type="text" name="uid" />
</label>
</p>
<p>
<label> 学历
<input type="text" name="education" />
</label>
</p>
<p>
<label> 部门
<input type="text" name="department" />
</label>
</p>
<p>
<label> 职务
<input type="text" name="job" />
</label>
</p>
<p>
<label> 职称
<input type="text" name="title" />
</label>
</p>
<p>
<label> 入职时间
<input type="text" name="beginTime" />
</label>
</p>
<p>
<label> 手机
<input type="text" name="phoneNum" />
</label>
</p>
<p>
<label> 电子邮件
<input type="text" name="email" />
</label>
</p>
<p>
<label> 专业技能
<input type="text" name="skill" />
</label>
</p>
<p>
<label> 照片
<input type="text" name="photo" />
</label>
</p>
<p>
<label> 附件
<input type="text" name="attachment" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="确认" />
</label>
<label>
<input type="submit" name="Submit" value="重置" />
</label>
</p> </form>
</div>
</body>
</html>
做过断点了,teacherForm是有值的
简单的问一下。。
有值了,你还set干嘛呢?直接用就好了